Les Allergies
Alimentaires
Posez votre question Signaler

Récuperer plusieurs variables AJAX [Résolu]

lezao 334Messages postés 13 juin 2010Date d'inscription 9 avril 2012Dernière intervention - Dernière réponse le 5 janv. 2011 à 01:50
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.
Lire la suite 

Récuperer plusieurs variables AJAX »

18 réponses
Réponse
+1
moins plus
donc si j'ai bien compris tu veux que ton fichier php te renvois tous les commentaires les uns apres les autres ??
azukaar- 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 ??
lezao- 1 juil. 2010 à 16:48
Dans un tableau tu veux dire ?
azukaar- 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
Ajouter un commentaire
Réponse
+1
moins plus
Si les données que tu souhaites récupérer sont sur deux fichiers différents, il faudra faire deux requête AJAX.
avion-f16- 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() )
lezao- 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.....
avion-f16- 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.
Ajouter un commentaire
Réponse
+1
moins plus
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
Ajouter un commentaire
Réponse
+1
moins plus
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);
	


}
Ajouter un commentaire
Réponse
+0
moins plus
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...
Ajouter un commentaire
Réponse
+0
moins plus
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>
lezao- 1 juil. 2010 à 16:29
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()
avion-f16- 1 juil. 2010 à 16:30
alert('Variable1 = '+json.Variable1);
midou - 5 janv. 2011 à 01:50
merci beaucoup, votre solution m'a servi pour résoudre un problème similaire.
Ajouter un commentaire
Ce document intitulé « Récuperer plusieurs variables AJAX » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Dossier à la une
Passage au tout numérique : quel coût pour les particuliers ?