Récuperer plusieurs variables AJAX

Résolu/Fermé
lezao
Messages postés
469
Date d'inscription
dimanche 13 juin 2010
Statut
Membre
Dernière intervention
14 août 2016
- Modifié par lezao le 1/07/2010 à 15:56
 bloupies - 2 oct. 2013 à 18:25
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

avion-f16
Messages postés
18745
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
26 mai 2022
4 391
1 juil. 2010 à 16:56
Si les données que tu souhaites récupérer sont sur deux fichiers différents, il faudra faire deux requête AJAX.
1
lezao
Messages postés
469
Date d'inscription
dimanche 13 juin 2010
Statut
Membre
Dernière intervention
14 août 2016
35
1 juil. 2010 à 17:38
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
avion-f16
Messages postés
18745
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
26 mai 2022
4 391
1 juil. 2010 à 17:42
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
lezao
Messages postés
469
Date d'inscription
dimanche 13 juin 2010
Statut
Membre
Dernière intervention
14 août 2016
35
1 juil. 2010 à 17:54
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
avion-f16
Messages postés
18745
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
26 mai 2022
4 391
1 juil. 2010 à 18:20
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
lezao
Messages postés
469
Date d'inscription
dimanche 13 juin 2010
Statut
Membre
Dernière intervention
14 août 2016
35
1 juil. 2010 à 18:04
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
lezao
Messages postés
469
Date d'inscription
dimanche 13 juin 2010
Statut
Membre
Dernière intervention
14 août 2016
35
1 juil. 2010 à 16:14
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
lezao
Messages postés
469
Date d'inscription
dimanche 13 juin 2010
Statut
Membre
Dernière intervention
14 août 2016
35
1 juil. 2010 à 20:02
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

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
azukaar
Messages postés
442
Date d'inscription
jeudi 1 juillet 2010
Statut
Membre
Dernière intervention
5 février 2013
23
1 juil. 2010 à 16:01
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
avion-f16
Messages postés
18745
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
26 mai 2022
4 391
1 juil. 2010 à 16:16
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
lezao
Messages postés
469
Date d'inscription
dimanche 13 juin 2010
Statut
Membre
Dernière intervention
14 août 2016
35
Modifié par lezao le 1/07/2010 à 16:30
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
avion-f16
Messages postés
18745
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
26 mai 2022
4 391
1 juil. 2010 à 16:30
alert('Variable1 = '+json.Variable1);
0
merci beaucoup, votre solution m'a servi pour résoudre un problème similaire.
0
Nickel !
0
azukaar
Messages postés
442
Date d'inscription
jeudi 1 juillet 2010
Statut
Membre
Dernière intervention
5 février 2013
23
1 juil. 2010 à 16:31
donc si j'ai bien compris tu veux que ton fichier php te renvois tous les commentaires les uns apres les autres ??
-1
lezao
Messages postés
469
Date d'inscription
dimanche 13 juin 2010
Statut
Membre
Dernière intervention
14 août 2016
35
1 juil. 2010 à 16:42
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
azukaar
Messages postés
442
Date d'inscription
jeudi 1 juillet 2010
Statut
Membre
Dernière intervention
5 février 2013
23
1 juil. 2010 à 16:46
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
lezao
Messages postés
469
Date d'inscription
dimanche 13 juin 2010
Statut
Membre
Dernière intervention
14 août 2016
35
1 juil. 2010 à 16:48
Dans un tableau tu veux dire ?
0
azukaar
Messages postés
442
Date d'inscription
jeudi 1 juillet 2010
Statut
Membre
Dernière intervention
5 février 2013
23
1 juil. 2010 à 16:58
ben non justement,
si tu as l'intention de parser comme tu l'a dis, tu n'as pas besoin de tableau
0