Plusieurs aller-retour serveur en meme temps

Eléphant du PHP | 113 Messages

19 juin 2007, 15:19

Bonjour à tous. Je suis face à un petit soucis avec l'AJAX.
J'essaye de vous expliquer simplement le problème:

En appuyant sur un bouton je lance un premier appel en ajax qui va mettre à jour ma BDD. Il se fait en désynchroniser. Une fois la base à jour je récupérer le texte et je l'injecte dans un div.
Utilisation classique qui marche très bien.

Cependant le clic sur le bouton déclenche ensuite une seconde fonction en ajax qui fait une requête, récupère des donnés et rafraichit un div. Cela aussi marche trés bien en désynchroniser également.

Le hic c'est que la première fonction modifie les donnés que récupère la seconde requête. Or de façon tout a fait aléatoire, il semblerais que la seconde requête récupère ses infos avant que la première est fait la mise à jour. C'est embêtant car le rafraichissement de mon second div est alors faux (rien ne se passe concrètement)

Ma question est donc, peut on temporiser le second script ajax ou faire en sorte qu'il se lance effectivement quand le premier est finit.

Eléphant du PHP | 377 Messages

19 juin 2007, 16:20

il y a plusieurs solutions :
1) effectuer le second appel AJAX dans la fonction qui traite le retour de ton premier appel AJAX, de cette façon tu es sur qu'ils s'exécutent dans le bon ordre
2) mettre un setTimeout() sur le second appel, cela marchera dans la plupart des cas mais pas tous (il peut y avoir un engorgement coté serveur)
3) faire le premier appel en mode synchrone, ce qui bloque l'exécution du reste du script tant que le retour n'est pas arrivé
Petit scarabée deviendra grand

Eléphant du PHP | 113 Messages

20 juin 2007, 11:46

J'ai prit l'option 1 et cela marche trés bien. merci :)