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

AJAX Discussion :

[AJAX] Récupérer la réponse du serveur dans une fonction


Sujet :

AJAX

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Avril 2006
    Messages : 29
    Points : 25
    Points
    25
    Par défaut [AJAX] Récupérer la réponse du serveur dans une fonction
    Hep!
    J'ai la une petite fonction javascript pour appeler un script php de manière asynchrone (ajax). Mais il semble y avoir un problème de portée avec la variable "respData" : lorsque je fais mon alert dans la fonction onreadystatechange, il affiche bien "contenu script", mais toute la fonction me retourne null quand je l'appelle, alors que j'ai à la fin : return respData;
    Quelqu'un voit le prob ?

    mon javascript :
    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
    27
    28
     
    // a function to call a simple php script (ONLY WITH "GET" METHOD FOR THE MOMENT!)
    var callPHPScript = function(url){
    	var XMLHTTP = getXMLHTTP();
    	var respData = null;
     
        // sending of the request
    	if(XMLHTTP){
    		XMLHTTP.open("GET", url, true);
    		XMLHTTP.send(null);
    	}
    	else{
    		alert("Could not create XMLHTTP object");
    	}
     
    	// action for the response from the server
      	if (XMLHTTP){
    		XMLHTTP.onreadystatechange = function(){
    	        if (XMLHTTP.readyState == 4){ 		// 4 : "complete" state
    			if (XMLHTTP.status == 200){ 	// 200 : HTTP Code OK
    	              	      respData = XMLHTTP.responseText;
    	              	      alert("answer is : " + respData); // affichera "answer is : contenu script"
    	           	}
    	        }
        	}
        }
    	return respData; // mais ici respData vaut null !
    }
    la fonction getXMLHTTP (qui fonctionne sans problème) :
    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
    27
    28
    29
    30
    31
    32
    33
    34
    35
     
    // get the XMLHTTP object
    function getXMLHTTP(){
    	var xmlhttp = null;
     
      	// Conditionnal Compilation for IE */
      	/*@cc_on
      	@if (@_jscript_version >= 5){
         	try{
            	xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
         	}
         	catch (e){
            	try{
               		xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
            	}
            	catch (E){
    				xmlhttp = null;
            	}
         	}
        }
    	@else
        	xmlhttp = null;
      	@end @*/
     
      	// try to create de http object if it's not done yet
    	if (xmlhttp == null && typeof XMLHttpRequest != 'undefined'){
    		try{
            	xmlhttp = new XMLHttpRequest();
         	}
         	catch (e){
            	xmlhttp = null;
         	}
      	}
      	return xmlhttp;
    }
    et le php :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <?php
    echo "contenu script";
    ?>

  2. #2
    Membre expert
    Avatar de FremyCompany
    Profil pro
    Étudiant
    Inscrit en
    Février 2006
    Messages
    2 532
    Détails du profil
    Informations personnelles :
    Âge : 32
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2006
    Messages : 2 532
    Points : 3 289
    Points
    3 289
    Par défaut
    mode synchrone <> mode asynchrone...
    Ta fonction retourne null car au momment ou la fonction return est exécutée, la réponse n'est pas encore parvenue du serveur...

    AJAX en mode synchrone :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    xhr.open("POST", url, false)
    xhr.send(data)
    return xhr.responseText;
    Fremy
    Pour vos développements Web et une navigation agréable, le tout gratuit :
    1) IE 8 + IE7Pro (Si vous ne connaissez pas IE7Pro, essayez !)
    2) FF 3 + Web Developper Toolbar + AdBlockPlus + FireBug + GreaseMonkey

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Avril 2006
    Messages : 29
    Points : 25
    Points
    25
    Par défaut
    Mmmm c'est juste... merci !

  4. #4
    Candidat au Club
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 3
    Points : 3
    Points
    3
    Par défaut
    Salut!

    Je sais que la discussion n'est pas récente, mais je ne trouve pas sur internet.
    Comment faire alors une fonction javascript qui me renvois la réponse du serveur (en restant en mode asynchrone, sinon je sais faire).

    C'est possible?

    Merci bcp

  5. #5
    Membre expérimenté Avatar de DoubleU
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 106
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 106
    Points : 1 388
    Points
    1 388
    Par défaut
    Non, pas possible.

  6. #6
    Candidat au Club
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 3
    Points : 3
    Points
    3
    Par défaut
    Oui, en y réfléchissant, c'est logique. Tant pis pour moi

    Et merci DoubleU;

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

Discussions similaires

  1. Réponses: 5
    Dernier message: 08/01/2010, 21h26
  2. [Prototype] Récupérer une valeur dans une fonction Ajax
    Par nkordiko dans le forum Bibliothèques & Frameworks
    Réponses: 17
    Dernier message: 08/01/2010, 12h50
  3. [Prototype] [AJAX] Récupérer la réponse / Lancer une fonction
    Par Shirraz dans le forum Bibliothèques & Frameworks
    Réponses: 9
    Dernier message: 07/04/2009, 07h50
  4. Réponses: 0
    Dernier message: 07/11/2008, 15h25
  5. Comment récupérer l'index du curseur dans une TStringGrid ?
    Par Sydaze dans le forum Composants VCL
    Réponses: 2
    Dernier message: 26/04/2005, 10h17

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