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

themagician67 22 Messages postés jeudi 29 novembre 2007Date d'inscription 26 octobre 2010 Dernière intervention - 15 oct. 2010 à 05:31 - Dernière réponse : themagician67 22 Messages postés jeudi 29 novembre 2007Date d'inscription 26 octobre 2010 Dernière intervention
- 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 3435 Messages postés lundi 26 décembre 2005Date d'inscription 14 janvier 2011 Dernière intervention - 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é 95 internautes ce mois-ci

Commenter la réponse de PetoleTeam
Meilleure réponse
PetoleTeam 3435 Messages postés lundi 26 décembre 2005Date d'inscription 14 janvier 2011 Dernière intervention - 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é 95 internautes ce mois-ci

Commenter la réponse de PetoleTeam
Meilleure réponse
PetoleTeam 3435 Messages postés lundi 26 décembre 2005Date d'inscription 14 janvier 2011 Dernière intervention - 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é 95 internautes ce mois-ci

Commenter la réponse de PetoleTeam
themagician67 22 Messages postés jeudi 29 novembre 2007Date d'inscription 26 octobre 2010 Dernière intervention - 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 22 Messages postés jeudi 29 novembre 2007Date d'inscription 26 octobre 2010 Dernière intervention - 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 22 Messages postés jeudi 29 novembre 2007Date d'inscription 26 octobre 2010 Dernière intervention - 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.