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] Retourner une valeur après un appel asynchrone ?


Sujet :

JavaScript

  1. #1
    Invité
    Invité(e)
    Par défaut [AJAX] Retourner une valeur après un appel asynchrone ?
    Bonjour

    Voilà, je m'y connais pas trop en technologie AJAX, mais j'utilise du Javascript de temps en temps (suffisamment pour comprendre un code quoi). Mon problème est le suivant : dans tout les tutos ou cours d'intro à AJAX, je n'ai vu que des chose du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    xhr.onreadystatechange = function()
    {
    	if(xhr.readyState == 4 && xhr.status == 200)
    	{
    		alert(xhr.responseText);
    	}
    }
    xhr.open("GET","ajax.php",true);
    xhr.send(null);
    (où xhr est un objet initialisé comme il faut)

    Bref, à chaque fois, dans la fonction "onreadystatechange" je ne vois que des "alert" ou des modification de la page (via DOM). N'est-il pas possible de faire en sorte que qu'une valeur soit disponible après l'appel ? Je m'explique... j'aimerai pouvoir faire une fonction de ce type :

    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
    function doAjaxRequest(sUrl)
    {
        // Création de l'objet avec une fonction qui fait ce qui va bien.
        var oHttp = getHTTPObject();
        var value;
     
        // Définition de la méthode qui s'occupe de traiter la réponse.
        oHttp.onreadystatechange = function ()
        { 
             if (oHttp.readyState == 4)
             {
                value = oHttp.responseText;
             }
        };
     
        // Préparation d'une requête asynchrone de type GET.
        oHttp.open("GET", sUrl);
     
        // Lancement de la requête.
        oHttp.send(null);
    }
    que je puisse appeler en faisant un truc du genre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var value = doAjaxRequest(sUrl);
    Pour obtenir la valeur et pouvoir l'exploiter (il manque biensûr un return dans ma fonction pour que ça ait une vague chance de peut-être fonctionner, mais je ne saurais pas trop où le mettre)...
    N'importe quel autre moyen de récupérer cette valeur en dehors de la fonction "onreadystatechange" m'irait aussi ^^

    J'espère que c'est assez compréhensible ce que je dis et que vous allez pas me taper en me disant que ce que je demande ne peut évidemment pas se faire

  2. #2
    Membre expérimenté
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    1 252
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 252
    Points : 1 419
    Points
    1 419
    Par défaut
    en rajoutant "false" comme 3e paramètre à open, ça devrait aller...
    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
    function doAjaxRequest(sUrl)
    {
        // Création de l'objet avec une fonction qui fait ce qui va bien.
        var oHttp = getHTTPObject();
        var value;
     
        // Définition de la méthode qui s'occupe de traiter la réponse.
        oHttp.onreadystatechange = function ()
        { 
             if (oHttp.readyState == 4)
             {
                value = oHttp.responseText;
             }
        };
     
        // Préparation d'une requête synchrone de type GET.
        oHttp.open("GET", sUrl, false);
     
        // Lancement de la requête et attente du retour
        oHttp.send(null);
     
     
        return value;
    }

  3. #3
    Invité
    Invité(e)
    Par défaut
    Merci, j'avais fini par trouver comment renvoyer ma variable, mais il me manquait le false dans l'appel à open ! Tout fonctionne

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

Discussions similaires

  1. Récupération d'une valeur après l'appel Ajax
    Par freestyler1982 dans le forum jQuery
    Réponses: 3
    Dernier message: 05/06/2014, 15h22
  2. Réponses: 3
    Dernier message: 05/07/2008, 19h09
  3. Réponses: 2
    Dernier message: 23/10/2005, 18h05

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