Return et AJAX

Résolu
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!
Configuration: Windows Vista
Firefox 3.5.5

2 réponses

  1. Penses à l'indiquer quand c'est résolu
    1. 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. 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!