|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||
|
Membre du Club
![]() Jonathan Inscription : avril 2007 Messages : 274 ![]() |
Bonjour à tous,
Je souhaiterais savoir s'il est possible d'executer plusieurs ajax.request les unes à la suite des autres. Code :
|
||
|
|
00
|
|
|
#2 | ||
|
Membre habitué
![]() Inscription : septembre 2007 Messages : 169 ![]() |
Dans ta fonction test, tu fais appel à ta 2eme request.
Ex : Code :
|
||
|
|
00
|
|
|
#3 |
|
Membre du Club
![]() Jonathan Inscription : avril 2007 Messages : 274 ![]() |
J'espérais une autre réponse. J'avais bien cette solution mais elle ne me convient pas.
Si par exemple j'ai 10 fonctions "test" et que selon les évènements (chargement de la page, clique etc) je souhaite lancer dans un cas les fonctions test 1 puis 2 et 7 et dans un autre cas 3 puis 4 puis 6 puis 3, cela devient vite le bordel. Il n'est pas possible de faire des fonctions "génériques" (test dans cet exemple) et de créer ensuite des fonction (action1, action2 etc) qui font appel à ces fonctions test sans devoir les modifier? |
|
|
00
|
|
|
#4 | ||
|
Membre habitué
![]() Inscription : septembre 2007 Messages : 169 ![]() |
Hum dans ce cas tu pourrais essayer avec une classe qui garde un tableau des fonctions a appelé, et tu apel sa méthode de chargement qui ressemblerai plus ou moins à ca :
Code :
|
||
|
|
00
|
|
|
#5 |
|
Membre du Club
![]() Jonathan Inscription : avril 2007 Messages : 274 ![]() |
Je comprend bien ta fonction pour la première partie => si une requête est déja en cours, on relance la fonction load() jusqu'à ce que le nombre de requete soit égal à zéro.
Cependant j'ai du mal à comprendre la deuxième partie... |
|
|
00
|
|
|
#6 | ||
|
Membre habitué
![]() Inscription : septembre 2007 Messages : 169 ![]() |
Oui excuse moi, je l'ai écris un peu rapidement. tab est en fait this.tab. Il correspond au tableau de fonctions que tu auras préalablement remplis dans ta classe avec la liste des fonctions à appeler, dans l'ordre.
Donc ta classe à un attribut tab de type tableaux de fonctions, et une méthode load. Code :
|
||
|
|
00
|
|
|
#7 |
|
Membre du Club
![]() Jonathan Inscription : avril 2007 Messages : 274 ![]() |
Je n'ai pas encore essayé mais je ne demande si de cette manière, il ne va pas parcourir tout le tableau et lancer l'execution des fonctions toutes en même temps....?
|
|
|
00
|
|
|
#8 |
|
Membre habitué
![]() Inscription : septembre 2007 Messages : 169 ![]() |
Normalement non. Au 1er appel de load, il n'y a pas de requete en cours, il va donc lancer le 1er "test" et relancer la méthode "load".
"test" va faire une requete. "load" va s'éxécuter, une requete est en cours, elle va attendre, jusqu'a ce que "test" soit fini. "test" se finit. on peut alors lancer "test2", et ca recommence. Si jamais la requete ne part pas assez vite et qu'il a le temps de lancer la fonction suivante avant, tu peux remplacer par Ca devrait suffir. Après j'ai pas testé, donc à voir si ca marche réellement. |
|
|
00
|
|
|
#9 | ||
|
Membre du Club
![]() Jonathan Inscription : avril 2007 Messages : 274 ![]() |
Merci pour tous ces conseils. Je ne peux pas tester tout ca tout de suite mais en gros, la fonction ressemblera à ca?
Code :
|
||
|
|
00
|
|
|
#10 | ||
|
Membre habitué
![]() Inscription : septembre 2007 Messages : 169 ![]() |
Oui, enfin sauf que je viens de me rappeler que l'objet pose problème avec le settimeout, donc vautmieux travailler en fonction et variables simples :
Code :
|
||
|
|
00
|
|
|
#11 |
|
Membre du Club
![]() Jonathan Inscription : avril 2007 Messages : 274 ![]() |
Je commence tout juste l'ajax (et donc le javascrip) et je ne savais pas qu'une variable définie en dehors d'une fonction pouvait être utilisée dans une fonction.
Est ce que cela veut dire que si je donne une valeur à la variable "chiffre" et que je me sert d'une variable qui porte le même nom dans une fonction, cela changera la valeur de ma variable chiffre? |
|
|
00
|
|
|
#12 |
|
Membre habitué
![]() Inscription : septembre 2007 Messages : 169 ![]() |
Oui, javascript n'est pas un langage très "propre".
Le mieux est encore que tu le testes avec quelques alert et tu pourras le constater Si tu ne mets pas le mot clé "var" devant une définition de variables, elle sera alors global à tous tes scripts. Cette facon de faire n'est pas très propre(utiliser un tableau en global), mais sinon c'est assez compliqué avec la fonction settimeout. |
|
|
00
|
|
|
#13 |
|
Membre confirmé
![]() Inscription : mars 2007 Messages : 247 ![]() |
slt,
si j'ai bien compris, tu veux appeller une suite de fonctions, laquelle suite est variable en fonction de divers paramètre... c'est ca ? de plus, toujours si j'ai bien compris, les fonctions appelées se succèdent, cad que la 2eme fonction doit attendre que la première soit achevée pour se lancer... c'est ca ?? au lieu de faire de l'Ajax à proprement parler, tu peux utiliser l'objet XHR en mode synchrone ; c'est à dire placer le troisième paramètre de open à false ! autre chose, dans ta même fonction d'appel de requête, tu peux définir une fonction callback pour chacune de tes différentes requetes... et ce sont ces fonctions callback qui appeleront la prochaine requête à exécuter...
__________________
Conception et hébergement de votre site Web : http://www.jvprod.fr ! |
|
|
00
|
|
|
#14 |
|
Membre du Club
![]() Jonathan Inscription : avril 2007 Messages : 274 ![]() |
Bonjour,
Je suis de retour. Je peux enfin tester tout ce dont on à parlé. Je rencontre une première erreur : Il essaie de lancer la fonction se nommant tab[0] plutot que de lancer la fonction aillant pour nom, la valeur de tab[0]. Comment jouer sur cette subtilité ? |
|
|
00
|
|
|
#15 | ||
|
Membre habitué
![]() Inscription : septembre 2007 Messages : 169 ![]() |
Salut, je viens de tester, ce code marche :
Code :
|
||
|
|
00
|
|
|
#16 | ||
|
Membre habitué
![]() Inscription : septembre 2007 Messages : 169 ![]() |
Bon vu que j'avais déjà commencé, j'en ai profité pour terminer, il restait pas grand chose.
Donc voila le code final : Code :
Tiens nous au courant |
||
|
|
00
|
|
|
#17 |
|
Membre du Club
![]() Jonathan Inscription : avril 2007 Messages : 274 ![]() |
J'ai résolu le problème en mettant
J'ai une autre question maintenant, completement différente. Est-il possible de mettre une sorte de marqueur sur une requete ajax. Un identifiant? Je voudrais pouvoir utiliser cette fonction "Ajax.activeRequestCount" mais seulement pour des requêtes pré-marquées. Quelque chose qui pourrait ressembler à cela "Ajax.activeRequestCount.ByName('lenom')"... |
|
|
00
|
|
|
#18 |
|
Membre habitué
![]() Inscription : septembre 2007 Messages : 169 ![]() |
Hum pour ca le plus simple serait de modifier prototype. Tu ajoutes une option supplémentaire à la méthode ajax.request pour lui donner le nom de sa "marque", et ensuite tu ajoutes un attribut supplémentaire(surement un tableau) pour stocker les différentes marques. Tu testeras les valeurs de ce tableau ensuite.
|
|
|
00
|
Copyright © 2000-2012 - www.developpez.com