Insérer une réponse ajax dans une variable globale [Résolu]

Signaler
Messages postés
22
Date d'inscription
jeudi 29 novembre 2007
Statut
Membre
Dernière intervention
26 octobre 2010
-
Messages postés
22
Date d'inscription
jeudi 29 novembre 2007
Statut
Membre
Dernière intervention
26 octobre 2010
-
Bonjour,

Je cherche à passer le résultat d'une requête ajax dans une variable mon code mais je n'y arrive pas. Voici mon code :

var tokens2;

var ajax1 = ajax();
ajax1.open('GET', 'ajaxRequests.php', true);
ajax1.onreadystatechange = function() {
if (ajax1.readyState 4 && ajax1.status 200) {
var reponse=ajax1.responseText;
tokens2 = reponse;
                //return reponse;
}  
}

alert(tokens2);


Il est censé affiché :

tokens2 = ['Jean Dupont', 'Pierre HUGUES', 'Patrick MARTIN'];

Merci d'avance.

6 réponses

Messages postés
3426
Date d'inscription
lundi 26 décembre 2005
Statut
Membre
Dernière intervention
14 janvier 2011
13
Bonjour,
dans la ligne
ajax1.open('GET', 'ajaxRequests.php', true);
le true signifie que tu es en mode asynchrone, en gros que ton script se poursuit à la ligne suivante sans attendre la réponse de la requête, donc tokens2 vaut rien, enfin sa valeur lors de sa déclaration, au moment où tu fais ton alert.

Ou tu fais ta requête en mode synchrone en mettant false, ou tu intègres ton alerte dans la fonction appelée en retour de requête.

;O)
Messages postés
3426
Date d'inscription
lundi 26 décembre 2005
Statut
Membre
Dernière intervention
14 janvier 2011
13
si ton code est complet ...?... alors il te manque au moins l'envoie de ta requête
ajax1.send(null);

pour donner un truc du style
avec false
var tokens2;
var ajax1 =  ajax();
ajax1.open('GET', 'ajaxRequests.php', false);
ajax1.send(null);
tokens2 = ajax1.responseText;
alert(tokens2);

avec true
var tokens2;
var ajax1  = ajax();
ajax1.onreadystatechange = function() {
  if (ajax1.readyState 4 && ajax1.status 200) {
    tokens2 = ajax1.responseText;
    alert( tokens2);
  }  
}
ajax1.open('GET', 'ajaxRequests.php', true);
ajax1.send(null);

un tutoriel parmi des centaines sur la toile Tutoriel AJAX (Asynchronous Javascript + XML), c'est peut être pas le meilleur alors fait une recherche avec AJAX et XMLHttpRequest par exemple
;O)
Messages postés
3426
Date d'inscription
lundi 26 décembre 2005
Statut
Membre
Dernière intervention
14 janvier 2011
13
penses à mettre réponse Acceptée ! cela peut en aider d'autre...

;O)
Messages postés
22
Date d'inscription
jeudi 29 novembre 2007
Statut
Membre
Dernière intervention
26 octobre 2010

Merci de ta réponse. J'ai mis false mais ça m'affiche toujours undefined.
Je ne comprends toujours pas. Peux-tu me donner plus d'explications, stp ?
tokens2 est bien une variable globale, non ?
Messages postés
22
Date d'inscription
jeudi 29 novembre 2007
Statut
Membre
Dernière intervention
26 octobre 2010

Merci pour ta réponse. ça marche maintenant. En fait, j'avais mis ajax1.send(null); mais j'ai oublié de le coller apparemment...
Sinon j'utilise fréquemment l'ajax en GET et en POST mais jamais avec l'option false.
En fait, c'est pour créer une autocomplétion (ou plutôt auto-suggestion).
Voilà. Merci.
Messages postés
22
Date d'inscription
jeudi 29 novembre 2007
Statut
Membre
Dernière intervention
26 octobre 2010

J'étais tellement omnibullé par mon problème que j'ai oublié ;o/
Grâce à toi, mon autosuggestion marche ;o)