|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||
|
Invité régulier
![]() Inscription : novembre 2009 Messages : 13 ![]() |
Bonjour !
Voilà mon souci est que, dans une fonction, j'ai entre autre 3 instructions qui devraient s'exécuter l'une après l'autre (en tout cas c'est ce que j'attendais d'un langage procédural comme JavaScript, ou alors j'ai rien compris...) Sauf que, la fonction XAJAX en seconde position, n'a pas l'air d'attendre la récupération des valeurs en première position, valeurs que je passe en paramètre dans l'appel de cette fonction XAJAX. De même pour l'instruction JavaScript, qui n'a pas l'air d'attendre la fin de l'exécution de la fonction XAJAX pour s'exécuter. Or j'ai impérativement besoin que chaque instructions soit bloquantes pour la suite... J'ai donc rusé en définissant un timer de quelques centaines de millisecondes, mais c'est du "bob le bricoleur style" et en général çà donne lieu à d'horribles bugs suivants les navigateurs, les postes, les couleurs... Code :
|
||
|
|
00
|
|
|
#2 | ||
![]() ![]() Andry Aimé Inscription : septembre 2007 Messages : 5 126 ![]() |
Bonsoir,
1- Javascript n'est pas procédural comme tu le penses, XMLHttpRequest que tu utilises pour AJAX est un objet par exemple 2- Citation:
3- Citation:
A+. |
||
|
|
00
|
|
|
#3 |
![]() ![]() ![]() Didier MouronvalDéveloppeur Web Inscription : juin 2008 Messages : 13 805 ![]() |
Comme le dit Andry, l'utilisation de xajax ne te dispense pas de connaitre comment fonctionne une requête AJAX sur le client, en particulier la notion de requête asynchrone
ajax.developpez.com/cours javascript.developpez.com/faq/javascript/?page=Ajax
__________________
Pas de question technique par MP ! Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi ! Vous possédez un blog et aimeriez diffuser vos billets sur le forum, 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
|
|
00
|
|
|
#4 |
|
Membre Expert
![]() Boris Dessysans emploi Inscription : décembre 2010 Messages : 854 ![]() |
perso, je ne me suis jamais pris la tête avec les paramètres synchrones et asynchrone (j'avais essayé il y a des années au début du xhr et sauf erreur de ma part, le synchrone ne fonctionnait pas .. ou pas partout.. ou je n'ai jamais réussi à les utiliser). bref, je privilégie les fonctions de callback pour la suite des instructions. (les fonctions de callback sont implémenté dans la plupart des lib ajax autrement si tu codes toi-même ton appel, tu check l’évènement onReadyStateChange... ou un truc comme ça qui déclenchera la suite de tes instructions que tu veux synchrones.)
|
|
|
00
|
|
|
#5 | |||
![]() ![]() Andry Aimé Inscription : septembre 2007 Messages : 5 126 ![]() |
Citation:
Code :
|
|||
|
|
00
|
|
|
#6 | |||
|
Membre Expert
![]() Boris Dessysans emploi Inscription : décembre 2010 Messages : 854 ![]() |
Citation:
|
|||
|
|
00
|
|
|
#7 |
|
Invité régulier
![]() Inscription : novembre 2009 Messages : 13 ![]() |
Apparement je me suis mal exprimé. Je reformule.
1) mes variables eid et pid sont affectés des valeurs d'une zone de liste déroulante 2) la fonction xajax_remplir_table(pid, eid) est appelée, il me faut donc m'assurer que les variables ont été affectées, avant l'appel de cette fonction. Cette fonction xajax crée un élément HTML 3) l'instruction javascript modifie la valeur de l'attribut checked de l'élément HTML fraîchement crée. La encore, si l'instruction est exécutée avant la fin de l'exécution de la fonction xajax_remplir_table, çà ne va pas, car l'élément n'existe pas encore. Concernant AJAX (pas xajax), en effet je ne me suis jamais penché sur le code. J'avouerai donc ne rien comprendre à xhr et consort... En revanche j'ai déjà étudié (en surface) son fonctionnement, les termes de synchrone et asynchrone ne me sont pas étrangers. Si je saisis bien, c'est le caractère asynchrone de ma fonction AJAX(2) qui fait qu'elle n'attend pas la fin d'un évènement pour s'exécuter ? Et de même pour l'instruction JavaScript (3) (synchrone ?) qui elle peut attendre la fin d'un évènement synchrone, mais pas la fin d'un évènement asynchrone... C'est çà ? |
|
|
00
|
|
|
#8 |
![]() ![]() Andry Aimé Inscription : septembre 2007 Messages : 5 126 ![]() |
Montre nous tes codes HTML généré et la fonction AJAX.
|
|
|
00
|
|
|
#9 |
|
Membre Expert
![]() Boris Dessysans emploi Inscription : décembre 2010 Messages : 854 ![]() |
De toutes manières à partir du moment où tu définis des timeout, tout devient asynchrone vu que cela s'exécute de manière indépendante au reste du code après un temps donné.
|
|
|
00
|
|
|
#10 |
![]() ![]() ![]() Didier MouronvalDéveloppeur Web Inscription : juin 2008 Messages : 13 805 ![]() |
De toute façon,
Code :
setTimeout('xajax_remplir_table('+pid+', '+eid+')',100); ![]() Code :
setTimeout('xajax_remplir_table(pid, eid)',100);
__________________
Pas de question technique par MP ! Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi ! Vous possédez un blog et aimeriez diffuser vos billets sur le forum, 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
|
|
00
|
|
|
#11 | |
|
Invité régulier
![]() Inscription : novembre 2009 Messages : 13 ![]() |
Citation:
Pour revenir au problème initial, tant pis, je vais garder cette vieille méthode des setTimeout... Merci à tous |
|
|
|
00
|
|
|
#12 |
![]() ![]() Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Analyste Programmeur Inscription : mars 2002 Messages : 30 007 ![]() |
setTimeout fonctione comme setInterval ... pour passer des paramètres il faut passer par une closure (fonction anonyme)
Code :
setTimeout(function(){xajax_remplir_table(pid, eid)},100);
__________________
Ma page Developpez Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts) Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir... Votre post est résolu ? Alors n'oubliez pas le Tag ![]() ![]() réalisations :www.planet-languages.com|www.saftair.com| www.ouestisol.fr | www.sebemex.fr | www.extramiante.fr | www.sistac-alizay.fr | www.acoustishop.fr | www.litt.fr | www.ouestventil.fr |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com