J'ai remarqué que parfois ma requête Mootools ajax est envoyée deux fois. La deuxième requête réussit tout de suite, mais la première continue à attendre indéfiniment. Je ne sais pas si c'est un bug dans Mootools ou quelque chose que j'ai fait.dupliquer des requêtes ajax au hasard
Cela a été vérifié avec firebug dans firefox et la console développeur en chrome. Je n'ai pas pu le vérifier dans IE, mais les symptômes sont les mêmes.
J'ai réussi à prendre une capture d'écran de Firebug montrant le problème: http://janipeltoniemi.net/ajax.png
Sur la droite, vous voyez le script de boucle de demande je l'ai écrit à des fins de test. Il fait juste une demande avec un nouvel identifiant une fois la requête précédente terminée, donc rien de fantaisie là-bas. Les 2 dernières lignes dans la console montrent le problème que j'ai. Comme vous pouvez le voir, ils ont tous les deux la même réponse et le même identifiant. Le hachage md5 est généré en utilisant md5(microtime(1))
, il devrait donc être différent si ces 2 requêtes étaient réellement différentes avec le même identifiant.
La boucle s'arrête à ce point car elle ne déclenche pas l'événement onSuccess lorsque le dernier est terminé. Je suppose que cela se déclencherait quand l'autre requête serait terminée, mais cela ne s'est pas encore produit.
Des idées ce qui se passe ici?
Presque oublié, j'utilise Mootools 1.2.4
Le code dans l'image:
r = new Request.HTML();
counter = 0;
//increments the counter and requests hello.php
go = function() {
counter += 1;
//The loop was too fast and producted some side effects when delay was not used
r.get.delay(10, r, [ 'templates/hello.php', { counter: counter } ])
}
//Create an endless loop. When the request from go() is finished, call go()
r.addEvent('success', go);
//Start the endless loop
go();
Vous devez publier votre code. –
cela ne montre pas quel événement pilote la requête ajax elle-même. –
Je ne suis pas sûr de comprendre. Le problème n'est en aucune façon spécifique au code ci-dessus. C'est juste un moyen rapide de reproduire le problème et c'est tout le code nécessaire (mis à part Mootools 1.2.4). Je pense que le problème ici est de faire passer le message correctement en raison de mon mauvais anglais, alors laissez-moi essayer encore une fois: Le code est supposé fonctionner tel quel dans firebug. Il commence une boucle sans fin avec une autre demande étant faite lorsque le précédent est terminé. À un moment donné, une requête est dupliquée (vérifiez l'image) et 'onSuccess' n'est pas déclenché, donc la boucle s'arrête. Voir les commentaires dans le code pour plus d'informations. – jpeltoniemi