Précédent   Forum des professionnels en informatique > Webmasters - Développement Web > AJAX
AJAX Forum sur la programmation AJAX. Avant de poster : Cours AJAX, FAQ AJAX, Toutes les FAQ JavaScript
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 22/01/2008, 09h34   #1
Nouveau Membre du Club
 
Développeur Web
Inscription : novembre 2007
Messages : 141
Détails du profil
Informations personnelles :
Âge : 28
Localisation : France, Bas Rhin (Alsace)

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : novembre 2007
Messages : 141
Points : 34
Points : 34
Par défaut 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 :
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 :
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 :
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
Laewella est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/01/2008, 10h21   #2
Membre Expert
 
Inscription : mai 2004
Messages : 1 253
Détails du profil
Informations personnelles :
Localisation : Belgique

Informations forums :
Inscription : mai 2004
Messages : 1 253
Points : 1 290
Points : 1 290
en rajoutant "false" comme 3e paramètre à open, ça devrait aller...
Code :
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;
}
dingoth est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/01/2008, 10h03   #3
Nouveau Membre du Club
 
Développeur Web
Inscription : novembre 2007
Messages : 141
Détails du profil
Informations personnelles :
Âge : 28
Localisation : France, Bas Rhin (Alsace)

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : novembre 2007
Messages : 141
Points : 34
Points : 34
Merci, j'avais fini par trouver comment renvoyer ma variable, mais il me manquait le false dans l'appel à open ! Tout fonctionne
Laewella est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 05h59.


 
 
 
 
Partenaires

Hébergement Web