Return et AJAX

Résolu
TheBigSchtroumpf Messages postés 146 Date d'inscription   Statut Membre Dernière intervention   -  
avion-f16 Messages postés 19252 Date d'inscription   Statut Contributeur Dernière intervention   -
Salut à tous!

Malgré une longue recherche sur google, je n'ai pas trouvé le moyen de créer une fonction javascript me renvoyant (par un return) la réponse envoyé par le serveur.
En fait j'y arrive en passant en mode synchrone, mais j'ai besoin de rester asynchrone :(

function requete_liste_films() {
	var xhr = getXMLHttpRequest();

	xhr.open("POST", "php/liste_films.php", true);
	xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
	xhr.send();
	
	xhr.onreadystatechange = function() {
		if (xhr.readyState == 4 && (xhr.status == 200 || xhr.status == 0)) {
			return xhr.responseText;
		}
	};
	
	return xhr.responseText;
}


Bien sur ici le code ne fonctionne pas et est idiot, c'est simplement pour vous expliquer mon probleme: le "return xhr.responseText" n'est pas encore rempli quand exécuté (la réponse du serveur n'est pas arrivé) et celui situé dans "xhr.onreadystatechange = function()" renvoi bien ce que je veut, mais ce n'est pas le return de requete_liste_films()!

Merci pour votre aide!

2 réponses

avion-f16 Messages postés 19252 Date d'inscription   Statut Contributeur Dernière intervention   4 507
 
Penses à l'indiquer quand c'est résolu
2
Atropa Messages postés 1940 Date d'inscription   Statut Membre Dernière intervention   274
 
bonjour,

tu ne peux pas ! c'est asynchrone...

la fonction se termine avant de recevoir la réponse du serveur... elle ne retourne rien

tu dois traiter la réponse dans la condition if(xhr.readyState == 4 && xhr.status == 200) ...
1
TheBigSchtroumpf Messages postés 146 Date d'inscription   Statut Membre Dernière intervention   18
 
Tu as raison, c'est logique.
J'aurais préféré un return, plus souple et je trouve plus propre, mais tant pis, je ferais sans.

Merci Atropa!
0