Ce que le monsieur essaye de t'expliquer, c'est qu'effectivement "tu peux la mettre où avant ou après qu'importe", mais du fait qu'il s'agisse d'un callback, justement, elle sera exécutée chronologiquement avant l'affectation à la variable globale (en fait juste après la déclaration de ton callback)
EDIT : un petit test. Ajoute dans ta pageEt clique dessus après avoir fait ton appel Ajax (donc après l'exécution de ta fonction callback)
Code : Sélectionner tout - Visualiser dans une fenêtre à part <input type="button" value="GO" onclick="alert(mydata);">
A+
La cause de ton problème a été donnée par tout le monde. Par contre, j'aimerais ajouter que c'est une mauvaise façon de coder que de tenter de persister dans ta voie. L'intérêt d'ajax c'est son asynchronisme; tenter de vouloir récupérer le résultat d'une requête dans le code appelant, c'est a dire de passer outre le système de callback ne peut qu'être source de nombreux problèmes, donc visiblement tu es déja la victime.
Si tu as d'autres instructions à exécuter avec le résultat de ta requête, elles doivent être déclarées DANS le callback, de cette façon, elles seront exécutées dès que le résultat sera disponible, et non avant (ce qui semble être la logique même).
Tu es d'accord que tu va créer le formulaire sitôt que tu as reçu les donnée du
serveur ? Donc l'appel à la fonction de création de ton formulaire doit se faire
depuis la callback, sinon comment fera tu pour savoir quand l'appeler ?
Parce que dans une application Ajax il est fréquent qu'un code de lancement de requête comme celui-ci soit appelé plusieurs fois avant même le retour de la première requête. Travailler avec une variable globale, c'est prendre le risque que
celle-ci soit écrasée par le résultat d'une requête successive.
le test avec un bouton fonctionne sauf que je ne comprend pas pourqoui il faudrait attendre la fin du chargement du dom pour avoir la valeur
j'ai une variable
je fais un appel ajax et je récupère ma valeur pour est-ce que le chargement dom
doit intervenir ?
Merci beaucoup à tous de m'avoir répondu !
Pas de question technique par MP !
Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
Mes formations video2brain : La formation complète sur JavaScript • JavaScript et le DOM par la pratique • PHP 5 et MySQL : les fondamentaux
Mon livre sur jQuery
Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum
C'est que ce n'est pas un problème de DOM (mais si le terme a été utilisé précédemment).
Je pense plutôt qu'il y a confusion entre déclaration de ta fonction et son exécutionA+
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 var mydata="init_value"; function getData(result) // Déclaration de getData() { // Déclaration de getData() mydata=result; // Déclaration de getData() } // Déclaration de getData() $.ajaxSettings.url='test.php'; $.ajaxSettings.success=getData; // FUTURE exécution de getData() $.ajax(); //test alert(mydata); // mydata=="init_value" .... // évènements dans la page // Appel Ajax // Callback => exécution getData() => mydata=result; // alert(mydata); => mydata==result
A tout hasard, même si le problème posé n'est pas identique, la solution proposée par marcha dans ce thread permet également de "différer" l'exécution du callback (ce que je n'avais pas réussi à faire).
A consulter éventuellement... ^^
----------------------------------------------------
marcha ? le... monsieur ?Envoyé par E.Bzz
![]()
C'est déjà le cas ici, la requête est asynchrone, la fonction callback est appelée par
JQuery lors de la réponse du serveur.
@zenzo Puisque RV en parle, ça me fait penser de te demander si tu a bien une
requête asynchrone ? et que tu ne t'attends pas à un comportement synchrone ?
Partager