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 19249 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 15 juin 2024 4 505
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 36
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 19249 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 15 juin 2024 4 505
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 36
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 19249 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 15 juin 2024 4 505
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 36
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 36
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 36
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 24
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 19249 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 15 juin 2024 4 505
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 36
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 19249 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 15 juin 2024 4 505
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 24
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 36
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 24
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 36
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 24
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