IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

[AJAX] Faire un return dans le onreadystatechange


Sujet :

JavaScript

  1. #1
    Membre à l'essai
    Inscrit en
    Mars 2006
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 26
    Points : 22
    Points
    22
    Par défaut [AJAX] Faire un return dans le onreadystatechange
    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...


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
     
    function ajax_select(req_select){
    	var liste = new Array();
    	if(_xmlHttp&&_xmlHttp.readyState!=0){
    		_xmlHttp.abort();
    	}
    	_xmlHttp=getXMLHTTP();
        if(_xmlHttp){
     
      		_xmlHttp.open("GET",_adresseRecherche+"?requete="+req_select);
     
     
      		_xmlHttp.onreadystatechange=function() {
      			if(_xmlHttp.readyState==4 && _xmlHttp.responseXML) {
    	  			liste = traite_reponses(_xmlHttp);
     
      			}
    	    };
     
     
    	    _xmlHttp.send(null);
     
        }
        return(liste);
     
    }

  2. #2
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 44
    Points : 31
    Points
    31
    Par défaut
    pourquoi ne pas rajouter le return liste a cette endroit?

    _xmlHttp.onreadystatechange=function() {
    if(_xmlHttp.readyState==4 && _xmlHttp.responseXML) {
    liste = traite_reponses(_xmlHttp);
    return liste;
    }
    };


    a cette endroit il devrait etre connu

  3. #3
    Membre à l'essai
    Inscrit en
    Mars 2006
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 26
    Points : 22
    Points
    22
    Par défaut
    le probleme, c'est qu'il effectue le retun non pas pour ajax_requete mais pour onreadystatechange...

  4. #4
    Membre à l'essai
    Inscrit en
    Mars 2006
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 26
    Points : 22
    Points
    22
    Par défaut
    J'ai toruvé un moyen! Je passe en mode syncrone 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é.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [AJAX] return dans une fonction ajax avec async: false,
    Par murdok74 dans le forum jQuery
    Réponses: 0
    Dernier message: 29/05/2014, 14h42
  2. [AJAX] Ajax : faire "le tri" dans une réponse
    Par Soundboy39 dans le forum AJAX
    Réponses: 2
    Dernier message: 08/12/2011, 13h21
  3. [PHP 5.2] Faire un echo dans un return
    Par Kyra13 dans le forum Langage
    Réponses: 10
    Dernier message: 12/02/2009, 17h55
  4. Faire un return dans un bloc try catch
    Par alizee971 dans le forum Débuter avec Java
    Réponses: 2
    Dernier message: 13/08/2008, 19h38
  5. [Syntaxe] Un return dans un try... Comment faire ?
    Par chuky dans le forum Général Java
    Réponses: 13
    Dernier message: 14/01/2005, 10h33

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo