2009-12-17 2 views
4

Est-il possible de supprimer une requête ajax précédente?Suppression des requêtes chevauchantes JQuery AJAX

Nous avons des données tabulaires très proches les unes des autres. Sur l'événement mouseover de chaque donnée, nous faisons une demande à notre serveur en utilisant l'objet JQuery Ajax et en affichant dans un popup.

Mais aussi souvent que nous déplaçons la souris vers d'autres contenus tabulaires, les réponses Ajax précédentes sont affichées dans les fenêtres contextuelles avant qu'une réponse exacte soit affichée pour ce contenu tabulaire.

J'ai besoin quand une nouvelle requête Ajax est générée précédente demande/réponse devrait être tué, de sorte que la dernière réponse toujours attendue est disponible dans le popup. J'utilise JQuery, PHP et Mysql pour server la demande.

+0

Voir http://stackoverflow.com/questions/446594/kill-ajax-requests-using-javascript-using-jquery –

+0

Aussi rfadams

Répondre

5

Pourriez-vous créer un objet Javascript Sync personnalisé qui serait partagé par la fonction effectuant les appels ajax suivants? Affectez un ID généré séquentiellement en tant que paramètre à l'appel de requête entrant. Incluez le même ID en réponse. Au lancement de chaque requête, attribuez un nouvel identifiant, incrémenté de 1 ou de n'importe quelle logique. Si l'identifiant courant en réponse n'est pas le même que celui de l'objet partagé; ignore la réponse sinon rend la réponse.

cela permettrait de résoudre proprement l'état de la course. Je ne suis pas sûr moi-même s'il y a un moyen de tuer la demande prématurément mais cela ne créerait pas au moins un problème de rendu auquel vous êtes confronté maintenant.

0

Une autre option consisterait à ne pas lancer une autre requête tant que la première n'est pas terminée.

0

Oui et non. C'est le point de l'Ajax. Pour pouvoir faire quelque chose de manière asynchrone. Ce que vous voulez faire, c'est annuler une demande qui détruit l'idée d'asynchrone. Peut-être que ce que vous pouvez faire est, si vous envoyez une autre requête, définir une valeur quelque part indiquant le nombre de demandes, puis dans les rappels à vos demandes, vérifiez si la quantité de requête est supérieure à 1, sinon ignorez la réponse.

Questions connexes