Return dans un onreadystatechange [AJAX] - HTML/CSS - Programmation
Marsh Posté le 13-12-2006 à 11:29:15
c'est normal que liste soit inconnue dans le onreadystatechange, tu as clairement un problème de scope avec ta variable.
Le onreadystatechange n'est pas appelé lors de l'execution de ta fonction ajax_select mais lors du changement d'état de ton objet xmlHttpRequest ( qui se produit logiquement après sa construction).
Bon maintenant j'imagine que tu as besoin de récupérer ton tableau pour faire autre chose. Le plus simple dans ton cas sera peut-être d'appeler cette "autre chose" à la fin de traite_reponse.
edit: ah un truc encore, avec une page qui reçoit en get une requête et l'execute, ça me parait juste over-dangerous
Marsh Posté le 13-12-2006 à 11:31:38
Justmeent le probleme ne peut pas etre pris dans l'autre sens... Cette fonction est une fonction outil que je vais utiliser dans plusieurs modules... L'ideal serait de pouvoir faire en sorte que la fonction associée au onreadystatechange renvoie liste et que je puisse le recuperer quelque part je pense...
Marsh Posté le 13-12-2006 à 12:16:15
Et bin fallait pas faire de l'asynchrone
C'est le retour d'information (et non l'envoi) qui doit déclencher une action!
Au pire du pire déclare globale ta variable mais ça resoudra que la moitié de ton problème car, même si la bonne valeur y sera mise lors du retour, tu risques d'utilisater ta variable avant celui-ci.
Marsh Posté le 13-12-2006 à 12:28:47
Ok, je vais utiliser un post alors... sinon pour declarer une variable globale dans js, je mets juste le var liste =new Array(); en dehors de la fonction non?
Marsh Posté le 13-12-2006 à 14:39:29
J'ai toruvé un moyen! Je passe en mode synchrone et ca marche! Il suffit de mettre _xmlHttp.open("GET",_adresseRecherche+"?requete="+req_select,false);
et plus besoin du onreadystatechange: l'execution ne se poursuit que quand le fichier xml est completement generé.
Marsh Posté le 13-12-2006 à 14:42:06
anapajari a écrit : Et bin fallait pas faire de l'asynchrone |
gelko a écrit : J'ai toruvé un moyen! Je passe en mode syncrone et ca marche! |
Marsh Posté le 13-12-2006 à 15:04:46
Mon pote, tout le monde n'a pas l'experience que t'as sur la techno... je decouvre, desolé de ne pas avoir la science infuse comme toi on dirait...
Marsh Posté le 13-03-2009 à 12:20:29
je remonte ce sujet, mais ayant cherché moi aussi, j'ai trouvé cette solution :
ton probleme : exploiter et afficher le resultat appelé par ta fonction AJAX dans différent endroit.
ta solution : "return maVariable;" pour utiliser le dit resultat.
ma solution :
document.getElementById(elementId).innerHTML = liste; // oui bon, là j'ai encore rien inventé...
mais en passant dans ta fonction appelante "elementID" pour exploiter le resultat où tu veux lorsque tu fais appel à la fonction.
exemple avec ta fonction :
Code :
|
l'appel à la fonction se fait où tu veux dans ta page !APRES CONSTRUCTION! de ton element HTML dont id=elementId
Code :
|
je sais : c'est pas "très" W3C, mais tant que les navigateurs integrerons la methode "innerHTML", c'est quand même plus simple.
tu peux gerer le tout en asynchrone, et inserer le resultat où tu veux dans tes pages html.
inconvénient : si tu veux retourner le resultat dans un script...
mais peut-etre peux-tu appeler une fonction js de mise en forme de "liste" en fonction d'un parametre passé à "ajax_select(req_select,elementId)" ?
-
-oui bon...
ben ce qui fera quand même :
Code :
|
appelé par "ajax_select("ta_Requete","Id_de ton_element, "exploitation_1" );"
voili, voilou...
Marsh Posté le 13-12-2006 à 11:16:59
Bonjour,
je suis en train de creer une fonction qui recoit en parametre une requete SQL, execute la requete en AJAX puis renvoie un tableau, le tout en AJAX. Tout marche sauf le return pour retourner le tableua de resultats. Apparemment, la variable liste n'est pas definie dans la fonction rapportée à l'evenement onreadystatechange. Quelq'un aurait il une idée pour pouvoir renvoyer mon tableau? merci...