Récuperer plusieurs variables AJAX

Résolu
lezao Messages postés 505 Statut Membre -  
 bloupies -
Bonjour,

je cherche a recuperer plusieur variable en ajax avec une seule requette :

Pour le moment je peux recuperer une variable a la fois grace au code suivant :

function file(fichier)  
{  
if(window.XMLHttpRequest) // FIREFOX  
xhr_object = new XMLHttpRequest();  
else if(window.ActiveXObject) // IE  
xhr_object = new ActiveXObject("Microsoft.XMLHTTP");  
else  
return(false);  
xhr_object.open("GET", fichier, false);  
xhr_object.send(null);  
if(xhr_object.readyState == 4) return(xhr_object.responseText);  
else return(false);  
}


puis la fonction javascript

function recuperer(info2)  
{  
mavariable = file('ajax.php?requette1=1&reference='+info2+'');  
}


Donc mavariable est egale a ce que me retourne le fichier ajax.php

il ecrit echo $info ;

Mes comment recuperer plusieurs variable en une seule requette en evitant de repetter la fonction recuperer() a chaque fois ?

merci pour votre aide, je débute en AJAX.

7 réponses

  1. avion-f16 Messages postés 19182 Date d'inscription   Statut Contributeur Dernière intervention   4 511
     
    Si les données que tu souhaites récupérer sont sur deux fichiers différents, il faudra faire deux requête AJAX.
    1
    1. lezao Messages postés 505 Statut Membre 36
       
      Pourrais tu m'aiguiller pour faire ceci ? ou adapter ton script a une requette ajax ? si tu as le temps biensur.

      Je te suis tres reconnaissant de me donner un coup de main.
      0
    2. avion-f16 Messages postés 19182 Date d'inscription   Statut Contributeur Dernière intervention   4 511
       
      Il suffit d'appeler 2x la fonction file() et de stocker le résultat dans deux variables JS différentes (dans la fonction recuperer() )
      0
    3. lezao Messages postés 505 Statut Membre 36
       
      Un peu comme ça :


      FIchier php :


      echo json_encode(array(
          'Variable1' => 'resultat1',
          'Variable2' => 'resultat2'
      ));



      fichier javascript :

      function recuperer()
      { 
      reference = "564654654" ;
      
      chaine = file('ajax.php?requette3=1&reference='+reference+'');
      
      
      	var json = jsonParse(chaine);
      	alert(json.Variable1);
      	
      
      }



      Il me repond undefined.....
      0
    4. avion-f16 Messages postés 19182 Date d'inscription   Statut Contributeur Dernière intervention   4 511
       
      Tu as dit que les deux variables se trouvaient sur deux fichiers différents, il faudra donc faire deux requêtes AJAX.

      La solution que je t'ai proposé n'est valable que si les variables sont sur le même script.
      0
  2. lezao Messages postés 505 Statut Membre 36
     
    Bon ça a l'air de marcher, en fait j'etait en php4 il fallait etre en php 5.

    je continue et je reviens mettre un RESOLU quand j'ai fini.

    En tout cas genial, merci a toi et a ton savoir avion-f16
    1
  3. lezao Messages postés 505 Statut Membre 36
     
    La parser, oui c'est ce que je voudrais faire mais je ne sais pas comment.
    Je m'explique :

    Je souhaite afficher les commentaires postés par les utilisateurs.

    Mon fichier ajax.js (exemple)

    demande a mon fichier ajax.php de recuperer tous les commentaires d'un post.
    j'ai donc plusieurs résultat.

    Commentaire 1

    commentaire 2 etc...

    Je souhaite donc recuperer tous les commentaires en une requette et pouvoir les afficher separement.

    Je pourrais executer ma requette ajax, 100 fois pour recuperer chaque commentaires, mais ce serait lourd.
    Donc je voudrais en une seule requette, demander a mon fichier php de me donner tous les commentaires et de me les transmettre via la requette ajax comme ci dessus.

    J'ai essayé de creer un tableau PHP pour y insrer mes valeurs dans une seule variable, mais je me suis dit que la fonction ajax n'allait recupéré qu'une seul information.

    Alors voila ce que je veux faire, idealement mettre mes infos dans un tableau php, puis le parser a avec javascript serait tres bien.

    Mais etant donné que mon fichier php repond en faisant un echo $var, je doute qu'il transmette un tableau mais uniquement une seul info.

    Donc je demande votre aide, meme si je dois utiliser un autre systeme de requette AJAX.

    MErci beaucoup...
    0
  4. lezao Messages postés 505 Statut Membre 36
     
    J'ai reussi, j'ai due formater la chaine moi mem voici le code:

    COté php :

    $guillement = '"' ;
    $i = 0 ;
    $sql40 = "SELECT * FROM commentaires  WHERE idphoto='".$reference."'";
    $req40 = mysql_query($sql40) or die('Erreur SQL !<br />'.$sql40.'<br />'.mysql_error());
    while ($data40 = mysql_fetch_array($req40)) {
    $i++ ;
    
    $comment = $data40["commentaire"];
    if($i != 1){$virgule = ', ' ;}else{$virgule = '' ;}
    $var = $virgule.$guillement."Variable".$i.$guillement ;
    $var2 = " : " ;
    $var3= $guillement."testok".$i.$guillement ;
    ${"tableau".$i} = $var.$var2.$var3 ;
    $tableau = $tableau.${"tableau".$i} ;
    }
    
    
    $chaine = "{".$tableau."}" ;
    
    echo $chaine  ;


    COté javascript :

    function file(fichier)  
    {  
    if(window.XMLHttpRequest) // FIREFOX  
    xhr_object = new XMLHttpRequest();  
    else if(window.ActiveXObject) // IE  
    xhr_object = new ActiveXObject("Microsoft.XMLHTTP");  
    else  
    return(false);  
    xhr_object.open("GET", fichier, false);  
    xhr_object.send(null);  
    if(xhr_object.readyState == 4) return(xhr_object.responseText);  
    else return(false);  
    }
    
    function recuperer()
    { 
    info2 = document.getElementById("refjava").value ;
    chaine = file('ajax.php?requette3=1&reference='+info2+'');
    
    	var json = jsonParse(chaine);
    	alert(json.Variable1);
    	alert(json.Variable2);
    	alert(json.Variable3);
    	
    
    
    }
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. azukaar Messages postés 531 Statut Membre 24
     
    Bonjour,

    pourrais tu préciser de ce que tu fais de tes variables? parce que logiquement si tu fais
    var truc = recuperer(gnan gnan);

    tu récupèrera une variable truc avec toutes tes valeurs dedans et donc tu sera obligé de la parser
    -1
  7. avion-f16 Messages postés 19182 Date d'inscription   Statut Contributeur Dernière intervention   4 511
     
    Salut.
    Si les différentes variables que tu souhaites récupérer sont sur le même fichier, tu peux utiliser le format JSON.

    En PHP, tu peux convertir un array (tableau) en JSON avec la fonction json_encode.
    echo json_encode(array(
        'Variable1' => 'Valeur',
        'Variable2' => 'Valeur'
    ));


    Dans le JS, il faudra transformer la variable mavariable qui est une chaine en un objet JSON. Tu peux utiliser la librairie JS "json-sans-eval.js" qui permet d'éviter la fonction eval(). Exemple :
    <script type="text/javascript" src="http://json-sans-eval.googlecode.com/files/json-minified.js"></script>
    <script type="text/javascript">
    var chaine = '{"Variable1":"Valeur 1", "Variable2":"Valeur 2"}';
    
    window.onload = function() {
    	var json = jsonParse(chaine);
    	alert(json.Variable1);
    };
    </script>
    -1
    1. lezao Messages postés 505 Statut Membre 36
       
      Désolé j'ai un peu du mal avec javascript.

      J'ai essayé ce code, mais il me repond : Valeur 1

      Normal Variable1 = valeur 1

      Comment faire pour qu'il me reponde :

      Variable1 = valeur

      ?

      il ne me donne pas ce qui est dans le tableau json_encode()
      0
    2. avion-f16 Messages postés 19182 Date d'inscription   Statut Contributeur Dernière intervention   4 511
       
      alert('Variable1 = '+json.Variable1);
      0
    3. midou
       
      merci beaucoup, votre solution m'a servi pour résoudre un problème similaire.
      0
    4. bloupies
       
      Nickel !
      0
  8. azukaar Messages postés 531 Statut Membre 24
     
    donc si j'ai bien compris tu veux que ton fichier php te renvois tous les commentaires les uns apres les autres ??
    -1
    1. lezao Messages postés 505 Statut Membre 36
       
      Oui c'est ça.

      L'idée de avion-f16 est tres bonne.

      Mais ça marche pas car mon code n'est pas sur la meme page, mon code php est sur la page php et mon code javascript est sur la page javascript.

      Du coup il ne recupere pas mes variables comme prevu par le script du dessus JSON.

      Mais c'est l'idée, a moins que j'ai pas sasi un truc...
      0
    2. azukaar Messages postés 531 Statut Membre 24
       
      mais je comprend pas... si ce n'est que ça pourquoi tu n'appelle pas ta fonction javascript normalement et dans ton php tu renvoie une variable contenant tous les post ??
      0
    3. lezao Messages postés 505 Statut Membre 36
       
      Dans un tableau tu veux dire ?
      0
    4. azukaar Messages postés 531 Statut Membre 24
       
      ben non justement,
      si tu as l'intention de parser comme tu l'a dis, tu n'as pas besoin de tableau
      0