`
zccst
  • 浏览: 3295523 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

终止jQuery的$.ajax方法abort

阅读更多
作者:zccst

最近遇到,如果用户频繁点击ajax请求,有两个问题:
1,如果连续点击了5个ajax请求,前4个其实是无效的,趁早结束节省资源。
2,更严重的问题是:最后一个发送的请求,响应未必是最后一个,有可能造成混乱。还需要一个队列来维护发送的请求和响应。

我其实已经设计好了该队列的实现方式,后来发现jQuery直接通过abort方法,这样就不需要那么复杂的实现了,毕竟还有其他事情等着完成。



用jquery发送ajax请求的确是太方便了,$.get、$.post、$.ajax等等,但我们有时候需要中途中止ajax请求。
举个例子,用comet做聊天时,发送一个请求后,服务端通常过几十秒后才会刷新链接、返回数据。假设服务端是30秒刷新一次链接,如果我们在10秒时想要停止这个ajax请求,怎么办呢?
先上代码,后面再解释
1var ajaxGet = $.get("comet_server.php",{id:1},function(data){
2....//一些操作
3});
4ajaxGet.abort();
上面这段代码其于两个知识点:
1. $.get返回的数据类型是XMLHttpRequest,请参考手册。($.post、$.ajax、$.getJSON、$.getScript也同样)
2. XMLHttpRequest对象有abort()方法
注意:abort()后,ajax请求立即停止,但还是会执行后面的function()。如果想避免执行其中的操作,可以在function()开始位置加判断
view sourceprint?
1var ajaxGet = $.get("comet_server.php",{id:1},function(data){
2if(data.length == 0) return true;
3....//一些操作
4});
5ajaxGet.abort();



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

//终止请求动作.
request.abort();


防止重复请求:
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);


如果您觉得本文的内容对您的学习有所帮助,您可以微信:
分享到:
评论

相关推荐

    教你如何终止JQUERY的$.AJAX请求

    ...用jquery发送ajax请求的确是太方便了,$.get、$.post、$.ajax等等,但我们有时候需要中途中止ajax请求。 举个例子,用comet做聊天时,发送一个请求后,服务端通常过几十秒后才会刷新链接、返回

    jquery ajax abort()的使用方法

    由于使用的是jquery,挡在手册里没有找到关于.abort()方法,在网上搜索了一下,在http://ooxx.me/jquery-ajax-abort.orz看到有关于jquery 里.abort()使用方法,直接用例子: 代码如下: current_request = $.get(‘/...

    js与jQuery终止正在发送的ajax请求的方法

    本文实例讲述了js与jQuery终止正在发送的ajax请求的方法。分享给大家供大家参考,具体如下: 核心:调用XMLHttpRequest对象上的abort方法 jquery的ajax方法有自己的超时时间设置参数: $.ajax({type:'POST', url:'...

    jQuery Ajax使用心得详细整理及注意事项

    ——————————————————————————– 终止Ajax请求 终止请求需要调用XMLHttpRequest对象的abort()方法 而在jQuery中的$.get,$.post、$.ajax、$.getJSON、$.getScript…的返回值都是...

    jquery电子文档chm

    $.ajax() takes one argument, an object of key/value pairs, that are used to initialize and handle the request. See below for a full list of the key/values that can be used. As of jQuery 1.2, you can...

    jQuery取消ajax请求的方法

    本文实例讲述了jQuery...var xhr = $.ajax({ type: "POST", url: "test.php", data: "name=test", success: function(msg){ alert( msg ); } }); //取消请求 xhr.abort() 希望本文所述对大家的jQuery程

    angular.http.abort:如何使用 angular 1.2 <= 中止 http 请求

    angular.http.abort 使用 angular 实现 http 请求中止和超时的示例。 如何开始: 安装 nodejs。 ( ) 安装依赖项 // npm install 在终端中输入 npm start 。 在浏览器中打开 。

    JQuery的Validation插件中Remote验证的中文问题

    charset=utf-8”, 加入到ajax请求的参数中,结果这次居然不起作用了。 多次观察Fiddler结果,发现无效后,只好打开JQuery.... $.ajax($.extend(true, { url: param, mode: “abort”, port: “validate” + e

    AngularJS大文件上传angularQFileUpload.zip

     $scope.selectFiles[index].upload.abort();  $scope.selectFiles.splice(index, 1); }; $scope.onFileSelect = function ($files) {  var offsetx = $scope.selectFiles.length;  for (var i = 0...

    浅谈jQuery中ajaxPrefilter的应用

    jQuery的定义了一个ajax过滤器ajaxPrefilter,通过该过滤器可以过滤通过jQuery...$.ajaxPrefilter(function (options, originalOptions, jqXHR) { //tm1、tm2表示开始时间、结束时间 var requestType, params, start

    node-abort-controller:基于EventEmitter的Node.JS的AbortController Polyfill

    节点异常终止控制器基于EventEmitter的Node.JS的AbortController Polyfill用法import fetch from 'node-fetch'import AbortController from 'node-abort-controller'const controller = new AbortController ( )...

    Navicat Premium 16

    一键安装即可,无需激活码!!!! Navicat Premium 是一套数据库开发工具,让你从单一应用程序中同时连接 MySQL、MariaDB、MongoDB、SQL Server、Oracle、PostgreSQL 和 SQLite 数据库。它与 Amazon RDS、Amazon ...

    Ajax 实现加载进度条

    $.ajax({ url : 'my_action', dataType: 'script', beforeSend : function(xhr, opts){ if(1 == 1) //just an example { xhr.abort(); // 停止请求 } }, complete: function(){ console

    用U盘装系统出现“Decompression error,Abort“

    使用U盘装系统过程中,中途突然弹出错误警告:“Decompressionerror,Abort“,出现这种情况一般是由U盘与电脑USB接口松动或是U盘中的系统映像文件损坏导致,可以重新插拔U盘,换个系统文件试试。 本文来源于:u大师...

    How to user ARM's data-abort exception.pdf

    How to user ARM's data-abort exception. A data-abort exception is a response by a memory system to an invalid data access. The data-abort exception handler is a program that can inform the programmer...

    PHP培训教程之AJAX技术.docx

    7、AJAX请求总共有多少种CALLBACK Ajax请求总共有八种Callback onSuccess onFailure onUninitialized onLoading onLoaded onInteractive onComplete onException 8.Ajax和javascript的区别 javascript一种在浏览器...

    AJAX 源码范例

    源码结构说明 1.AjaxDemo文件夹下为源文件 2.AjaxDemo.war为部署文件 <br>第20章 程序描述:本章将实现上传文件时显示进度条的功能。当上传文件时,客户端同时显示文件上传的进度,从而及时了解...

    navicat150_premium_cs_x64.exe

    Navicat Premium 是一套数据库开发工具,让你从单一应用程序中同时连接 MySQL、MariaDB、MongoDB、SQL Server、Oracle、PostgreSQL 和 SQLite 数据库。它与 Amazon RDS、Amazon Aurora、Amazon Redshift、Microsoft ...

Global site tag (gtag.js) - Google Analytics