Ajax, return XhrObj.responseText;

WRInaute accro
Bonjour,

Je découvre les techniques Ajax en profondeur !
Mais une question se pose.

Je voudrais non pas afficher le résultat obtenu directement dans un élément de la page, mais le récuperer dans une variable javascript, afin de l'exploiter.

Pour cela, j'ai une fonction qui me récupère mes données, et une autre qui les traite.
Dans la fonction récupérant les données, j'ai essayé cela :
Code:
var result = XhrObj.responseText;
Ou XhrObj est mon objet XMLHttpRequest

Cependant, j'ai une erreur de droits. Il refuse de faire le return, et me retourne retourne null, même lorsque la variable result prends une valeur "correcte" dans la première fonction.

D'ou ma question. existe-t-il une méthode/fonction en javascript qui permette de transformer cet objet en chaine de caractères ?
Actuellement, j'ai soit un 1 soit un 0 de retourné, mais je pourrais également avoir, à terme, des chaines de caractères ou autres chiffres.

Merci d'avance :p
 
WRInaute accro
J'ai résolu le problème en utilisant une variable globale que je réutilise dans ma seconde fonction au lieu de la retourner.
Mais si quelqu'un a une solution plus propre, je suis preneur.
 
Nouveau WRInaute
Bon, je cherche, je cherche, je cherche... exactement ce que tu cherchais, mais je ne trouve rien du tout :(((

As tu trouver une solution plus "propre" que la variable globale finalement ?
Si non, peux tu poster un extrait de ton code avec les variable globales ?

Merci d'avance, car là, ma patience est à son maximum !

A+
Connectravel
 
Nouveau WRInaute
Bon, ben alors je relance le débat !
Donc, pour résumer la situation, j'ai un joli script avec plusieurs parametres :
data : les donnée posté vers la page à interroger avec le HTTPrequest
method : qui permet d'envoyer les données soit en POST soit en GET
page : qui contient la page à "interroger"
sortie : qui contient l'ID du "composant" dans lequel je souhaite balancer le resultat que ce soit un div ou un champ input

Ce que j'aimerais c'est que sur un appel avec un parametre spécifique pour sortie genre "resultat_variable" qui fasse que mon script ne fasse pas un innerHTML ou autre truc du genre mais plutot un
Code:
var result = XhrObj.responseText
ou mieux :
Code:
return XhrObj.responseText
dès lors, dans ma page client je peux faire un appel genre

Code:
if(script_ajax("id_client=100", "post", "fonction_pays_serveur.php", "resultat_variable") != "FRANCE") {
 // mon traitement si mon client n'est pas en France
} else {
// Mon traitement si mon client est en France 
}

Je précise qu'à l'haure actuelle, je n'ai aucun probleme pour balancer directement le flus que me retourne mon "script_ajax()" dans un dic ou autre joyeuseté...par exemple :

si sur ma page destiné client j'ai un <div id="recup_ajax"></div>
ma fonction
Code:
script_ajax("id_client=100", "post", "fonction_pays_serveur.php", "recup_ajax");

fonctionne très bien et me met bien le flux dans mon div...

Par contre si je rajoute dans mon script_ajax un test genre :
if (sortie == "resultat_variable") {
return XhrObj.responseText;
} else {
content.innerHTML = XhrObj.responseText;
}

j'ai systémtiquement un résultat "undefined" (pour sortie = resultat_variable)

Je ne sais pas si j'ai été assez clair... Merci de votre aide en tout cas !

A+
Connectravel
 
Discussions similaires
Haut