Maison > interface Web > js tutoriel > le corps du texte

Apprenez à mettre fin au $.AJAX request_jquery de JQUERY

WBOY
Libérer: 2016-05-16 15:14:20
original
1167 Les gens l'ont consulté

J'ai récemment constaté que si les utilisateurs cliquent fréquemment sur les requêtes ajax, il y a deux problèmes :

1. Si vous cliquez sur 5 requêtes ajax d'affilée, les 4 premières sont en fait invalides. Terminez-la dès que possible pour économiser des ressources.

2. Le problème le plus grave est le suivant : la réponse à la dernière demande envoyée peut ne pas être la dernière, ce qui peut prêter à confusion. Une file d'attente est également nécessaire pour conserver les demandes et les réponses envoyées.

J'ai en fait conçu l'implémentation de la file d'attente, et j'ai découvert plus tard que jQuery utilise directement la méthode abort, donc il n'y a pas besoin d'une implémentation aussi compliquée. Après tout, il y a d'autres choses qui attendent d'être terminées.

Il est vraiment pratique d'utiliser jquery pour envoyer des requêtes ajax, $.get, $.post, $.ajax, etc., mais parfois nous devons mettre fin à la requête ajax à mi-chemin.

Par exemple, lorsque vous utilisez Comet pour discuter, après l'envoi d'une requête, le serveur actualise généralement le lien et renvoie les données après des dizaines de secondes. Supposons que le serveur actualise le lien toutes les 30 secondes. Et si nous voulons arrêter la requête ajax toutes les 10 secondes ?

Commençons par le code et expliquons plus tard

var ajaxGet = $.get(“comet_server.php”,{id:1},function(data){
….//一些操作
});
ajaxGet.abort();

Copier après la connexion

Le code ci-dessus se compose de deux points de connaissance :

1. Le type de données renvoyé par $.get est XMLHttpRequest, veuillez vous référer au manuel. (Il en va de même pour $.post, $.ajax, $.getJSON, $.getScript)

2. L'objet XMLHttpRequest a la méthode abort()

Remarque : après abort(), la requête ajax s'arrête immédiatement, mais la fonction suivante() sera toujours exécutée. Si vous souhaitez éviter d'effectuer les opérations, vous pouvez ajouter un jugement au début de function()

var ajaxGet = $.get(“comet_server.php”,{id:1},function(data){
if(data.length == 0) return true;
….//一些操作
});
ajaxGet.abort();

Copier après la connexion

Terminer la requête ajax :

var request = $.get(“ajax.aspx”,{id:1},function(data){
  //do something
});
//终止请求动作.
request.abort();

Copier après la connexion

Empêcher les demandes en double :

var request;
if(request != null)
  request.abort();
request = $.get(“ajax.aspx”,{id:1},function(){
  //do something
});
ajax & setTimeout实现 secondTry 在等待一秒之后将firstTry的ajax终止:
var firstTry = $.ajax(
 //do something
 );
var secondTry = setTimeout(function(){alert(‘ok');firstTry.abort()},1000);
Copier après la connexion

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal