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

themagician67
Messages postés
22
Date d'inscription
jeudi 29 novembre 2007
Dernière intervention
26 octobre 2010
- 15 oct. 2010 à 05:31 - Dernière réponse : themagician67
Messages postés
22
Date d'inscription
jeudi 29 novembre 2007
Dernière intervention
26 octobre 2010
- 15 oct. 2010 à 21:21
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.
Afficher la suite 

Votre réponse

6 réponses

Meilleure réponse
PetoleTeam
Messages postés
3435
Date d'inscription
lundi 26 décembre 2005
Dernière intervention
14 janvier 2011
- 15 oct. 2010 à 09:28
3
Merci
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)

Merci PetoleTeam 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 86 internautes ce mois-ci

Commenter la réponse de PetoleTeam
Meilleure réponse
PetoleTeam
Messages postés
3435
Date d'inscription
lundi 26 décembre 2005
Dernière intervention
14 janvier 2011
- 15 oct. 2010 à 13:01
3
Merci
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)

Merci PetoleTeam 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 86 internautes ce mois-ci

Commenter la réponse de PetoleTeam
Meilleure réponse
PetoleTeam
Messages postés
3435
Date d'inscription
lundi 26 décembre 2005
Dernière intervention
14 janvier 2011
- 15 oct. 2010 à 15:59
3
Merci
penses à mettre réponse Acceptée ! cela peut en aider d'autre...

;O)

Merci PetoleTeam 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 86 internautes ce mois-ci

Commenter la réponse de PetoleTeam
themagician67
Messages postés
22
Date d'inscription
jeudi 29 novembre 2007
Dernière intervention
26 octobre 2010
- 15 oct. 2010 à 11:36
0
Merci
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 ?
Commenter la réponse de themagician67
themagician67
Messages postés
22
Date d'inscription
jeudi 29 novembre 2007
Dernière intervention
26 octobre 2010
- 15 oct. 2010 à 15:01
0
Merci
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.
Commenter la réponse de themagician67
themagician67
Messages postés
22
Date d'inscription
jeudi 29 novembre 2007
Dernière intervention
26 octobre 2010
- 15 oct. 2010 à 21:21
0
Merci
J'étais tellement omnibullé par mon problème que j'ai oublié ;o/
Grâce à toi, mon autosuggestion marche ;o)
Commenter la réponse de themagician67

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.