Bonjour,
J'ai une requête Ajax:

$(document).ready(function(){   

                    $("#amis_commun_liste .afficher_plus_modal").bind('click',function f(){
                     var afficher_plus_modal = $(this).attr("class");
                   var id = "<?php  echo $_GET['id']; ?>";

                     $(this).unbind('click',f);
                     $.ajax({
                     type: "post",
                     url: "voir_profil_includes/func_infos.php",
                     data: {
                          "afficher_plus_modal": afficher_plus_modal,
                          "id" : id           
                        },
                     beforeSend: function() {
                        $("#amis_commun_liste .afficher_plus_modal").html("En cours");
                     },
                     success: function(data) {
                        if (data =="success") {                          
                        //Zone de traitement après le succes de l'operation

                        }
                     }
                     });
                  });

                });

La requête Ajax fait appelle à cette requête php/mysql dans func-infos.php:

if (!empty($_POST['afficher_plus_modal'])) {
   require("../voir_profil_includes/connect_db.php");
    $infos = [];
    $q = $bdd->prepare(" SELECT u.id,
  u.nom, u.prenom, u.avatar,u.couverture
FROM users u
INNER JOIN
(
  SELECT id_exp, id_des
  FROM friends
  WHERE id_exp IN(:id_exp, :id_des)
    AND active = 1
  UNION
  SELECT id_des, id_exp
  FROM friends
  WHERE id_des IN(:id_exp, :id_des)
    AND active = 1
) tmp ON tmp.id_des = u.id
GROUP BY u.id
HAVING COUNT(*) = 2
ORDER BY RAND() LIMIT 5
");
     $q->execute(array(
                    "id_exp" => $_POST["id"],
                    "id_des" => info_profil()->id
                    ));

      while ($info = $q->fetch(PDO::FETCH_OBJ)) {
             $infos[] = $info;               
             }      
     // ON returne les données après operation
        return $infos;
     //On informe Ajax que l'operation s'est bien effectué
     echo "success";
}

Ce code ne produit pas d'erreurs mais je ne sais pas comment je pourrais recuperer les donnees retournées depuis func_infos.php" pour mettre à jour la page liste_ami_commun.php en affichant les nouvelles données dans liste_ami_commun.php.

Merci mais je sais que ça sera pas un travail simple.

4 réponses


Salut

Ton fichier php ne peut pas retourner qqch (sauf si ce code est dans ne fonction), de plus, ton echo "success", ne sera pas affiché tant que tu auras un return devant.

Afin de retourner tes infirmations au navigateur de ton client, ton php peut afficher un JSON, c'est un format facilement traitable via JavaScript.

Une fois le json affiché dans ta page, il faudra le traiter coté client et ça se passera dans la fonction success. Il faudra préciser lors de ton appel AJAX que c'est une réponse JSON que tu attends afin que le retour de ton php soit déjà parsé.

Si tu as du mal à comprendre, je t'invite à aller lire la doc de jQuery à ce sujet http://api.jquery.com/jquery.ajax/

Ps: Ton php ne faisant que de la restitution, il serait plus correct de faire un appel AJAX de type GET ( tu peux utiliser le raccourcis: http://api.jquery.com/jquery.get/)

N'hésites pas à aller voir dans la console de ton navigateur le résultat de ton appel ajax, et de placer des console.log dans ton code JavaScript ;)

Je comprends pas grand chose de ce que tu dis avec json,
y'a t'il un autre moyen de resoudre le problème sans passer par json ou bien je suis obligé de l'apprendre ?
Merci

tu n'as rien a apprendre, le json est juste une representation structuré d'une donne (JavaScript Object Notation) et il suffit de l'encoder en PHP

json_encode(taData)

et de le parse en JS

JSON.parse(taData)

voila un peut de doc php pour le json

Salut,

A la place de faire : echo "success";
Tu dois faire echo json_encode('success'); ou echo json_encode(data) pour une variable.
Mais pour que AJAX puisse récupérer la donnée, ta page ne doit afficher que du JSON donc pas de VAR_DUMP ou autre.

Bonne journée