Pb ajax, impossible de récupérer les données

Résolu/Fermé
ephelya Messages postés 289 Date d'inscription mercredi 28 septembre 2011 Statut Membre Dernière intervention 20 juin 2023 - Modifié le 12 juil. 2020 à 10:08
ephelya Messages postés 289 Date d'inscription mercredi 28 septembre 2011 Statut Membre Dernière intervention 20 juin 2023 - 12 juil. 2020 à 11:18
Bonjour,

J'ai un scipt js. qui récupère une liste de news à afficher sur ma page d'accueil pour faire un infinite scroll. La fonction php fonctionne parfaitement mais je n'arrive pas à récupérer les données...
Voici mon script js
      $.ajax({ 
            type: "POST",
            dataType: 'json',
            url: "<?php echo HOME; ?>ajx/ajax.php", 
            data: {infinite: idmax,  debug:0},
            error : function(x,err){
                    alert(err);
                },
            success: function(posts){
                console.log("ok listnews 1 "+posts);
                console.log("ok listnews 2 "+posts.listnews);
                console.log("ok listnews 3 "+posts['listnews']);
            }
         }); 

mon script php
    if ($infinite){ $result = infinite_news($infinite, $debug); }
    header('Content-Type: application/json');
    echo json_encode($result);

    function infinite_news($idmax, $debug)
    {
        $iduser = $_SESSION['iduser'];
        $lim =\Models\Admin::get_option("nb_posts_home", $debug) -> value;
        $list = \Models\Admin::get_wallnews_list ($iduser, 0, $lim, $idmax, $statut, $debug);
        foreach ($list as $news)
        {
            $display[$news ->id]['class']=\Models\Admin::get_wallnews_class($news, 0);
            $display[$news ->id]['photo']=\Models\Admin::get_wallnews_photo($news, 0);        
            $display[$news ->id]['action']=\Models\Admin::get_wallnews_action($news, 0);
        }
        $data['listnews']  = $display;
        if ($nb<$lim) { $data['stop'] = 1; } else  { $data['stop'] = 0; }
        //print_r($data);
        return $data;
    }

et dans la console j'obtiens
ok listnews 1 [object Object] 
ok listnews 2 [object Object]
ok listnews 3 [object Object]


mais si je fais un print_r($data) dans le script php et que j'enlève dataType: 'json',, la console m'affiche ça
ok listnews 1 Array
(
    [listnews] => Array
        (
            [79] => Array
                (
                    [class] =>  admin new_flwd
                    [photo] => 
                    [action] => lola vient de s'abonner à votre profil. Vous avez un profil cosmétique similaire à 27 %. <br>Voulez vous voir son profil et découvrir ce qui marche pour elle ?
                )

            [78] => Array
                (
                    [class] =>  admin new_flwd
                    [photo] => 
                    [action] => kali vient de s'abonner à votre profil. Vous avez un profil cosmétique similaire à 42 %. <br>Voulez vous voir son profil et découvrir ce qui marche pour elle ?
                )

            [75] => Array
                (
                    [class] =>  new_fill
                    [photo] => https://rosetomate.com/css/UPLOADS/VISUELS/profile_f.jpg
                    [action] => <a href='https://rosetomate.com/perso/32'>kali</a> vient de s'inscrire sur Rose Tomate grâce à vous.
                )

        )

    [stop] => 1
)
{"listnews":{"82":{"class":" admin new_flwd","photo":null,"action":"kali vient de s'abonner \u00e0 votre profil. Vous avez un profil cosm\u00e9tique similaire \u00e0 42 %. <br>Voulez vous voir son profil et d\u00e9couvrir ce qui marche pour elle ?"},"81":{"class":" admin new_flwd","photo":null,"action":"kali vient de s'abonner \u00e0 votre profil. Vous avez un profil cosm\u00e9tique similaire \u00e0 42 %. <br>Voulez vous voir son profil et d\u00e9couvrir ce qui marche pour elle ?"},"80":{"class":" admin new_flwd","photo":null,"action":"kali vient de s'abonner \u00e0 votre profil. Vous avez un profil cosm\u00e9tique similaire \u00e0 42 %. <br>Voulez vous voir son profil et d\u00e9couvrir ce qui marche pour elle ?"},"79":{"class":" admin new_flwd","photo":null,"action":"kali vient de s'abonner \u00e0 votre profil. Vous avez un profil cosm\u00e9tique similaire \u00e0 42 %. <br>Voulez vous voir son profil et d\u00e9couvrir ce qui marche pour elle ?"},"78":{"class":" admin new_flwd","photo":null,"action":"kali vient de s'abonner \u00e0 votre profil. Vous avez un profil cosm\u00e9tique similaire \u00e0 42 %. <br>Voulez vous voir son profil et d\u00e9couvrir ce qui marche pour elle ?"},"75":{"class":" new_fill","photo":"https:\/\/rosetomate.com\/css\/UPLOADS\/VISUELS\/profile_f.jpg","action":"<a href='https:\/\/rosetomate.com\/perso\/32'>kali<\/a> vient de s'inscrire sur Rose Tomate gr\u00e2ce \u00e0 vous."}},"stop":1} 
ok listnews 2 undefined 
ok listnews 3 undefined


Je n'arrive pas à comprendre où est mon erreur et comment récupérer mes données pour les afficher....
Merci d'avance pour votre aide !


Configuration: Macintosh / Firefox 78.0

3 réponses

jordane45 Messages postés 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024 4 650
Modifié le 12 juil. 2020 à 10:36
Bonjour

Ton code est bon
Juste, dans tes console.log , replace les + par des virgules...





0
ephelya Messages postés 289 Date d'inscription mercredi 28 septembre 2011 Statut Membre Dernière intervention 20 juin 2023 2
Modifié le 12 juil. 2020 à 11:00
Ça me donne ça dans la console :

ok listnews 1 [object Object]
ok listnews 2 Object { listnews: {…}, stop: 1 }
ok listnews 3 Object { 75: {…}, 78: {…}, 79: {…}, 80: {…}, 81: {…}, 82: {…} }


mais que je fasse
                $(posts.listnews).each(function (id, val)
                {
                    console.log(" id ",id," val", val);
                });

ou
                $(posts.listnews).each(function (a, b)
                {
                    $(b).each(function (id, val)
                    {
                        console.log("id ",id," val", val);
                    });
                });

ou
                $(posts.listnews).each(function (a, b)
                {
                    $(b).each(function (c, d)
                    {
                        $(d).each(function (id, val)
                        {console.log("id ",id," val", val);}
                        );
                    });
                });


dans tous les cas ça me donne ça dans la console et je ne vois pas comment récupérer mes données...
 id  0  val  Object { 75: {…}, 78: {…}, 79: {…}, 80: {…}, 81: {…}, 82: {…} }
0
jordane45 Messages postés 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024 4 650
12 juil. 2020 à 11:10
success: function(posts){
  var listnews = typeof(posts.listnews) != 'undefined' ? posts.listnews : null;
  $.each(listnews ,function(id,val){
    console.log ("ID",id);
    console.log("class", val.class);
    console.log("photo", val.photo);
    console.log("action", val.action);
  });
}
0
ephelya Messages postés 289 Date d'inscription mercredi 28 septembre 2011 Statut Membre Dernière intervention 20 juin 2023 2
12 juil. 2020 à 11:18
parfait, merci beaucoup !! :-)
0