利用jquery ajaxPrefilter中断请求

    var pendingRequests = {};
$.ajaxPrefilter(function( options, originalOptions, jqXHR ) {
var key = options.url;
console.log(key);
if (!pendingRequests[key]) {
pendingRequests[key] = jqXHR;
}else{
//jqXHR.abort(); //放弃后触发的提交
pendingRequests[key].abort(); // 放弃先触发的提交
} var complete = options.complete;
options.complete = function(jqXHR, textStatus) {
pendingRequests[key] = null;
if ($.isFunction(complete)) {
complete.apply(this, arguments);
}
};
});

Prefilters是一个预过滤器,在每个请求之前被发送和 $.ajax() 处理它们前处理。

options 是请求的选项

originalOptions 值作为提供给Ajax方法未经修改的选项,因此,没有ajaxSettings设置中的默认值

jqXHR 是请求的jqXHR对象

以上内容的核心思想是维护一个队列,发送请求时,将请求加入队列,请求响应后,从队列中清除,这就保证了在任一时刻只能有一个同样的请求发送.

局限性:仅仅是前台防止jquery的ajax请求。对于非jquery的ajax请求,不起作用。因为使用的是jquery的ajaxPreFilter函数,仅仅对jquery的ajax请求有作用。

调用abort后jquery会执行error的方法,抛出abort的异常信息。可以使用以下方式区分出该类型的异常。

var ajax = $.ajax({
'error':function(jqXHR, textStatus, errorThrown){
if(errorThrown != 'abort'){
//ajax被调用abort后执行的方法
alert('您的ajax方法被停止了');
}
}
})

最新文章

  1. MyBatis通过JDBC生成的执行语句问题
  2. 忘记Windows7登陆密码解决办法
  3. 修改AssemblyInfo.cs自动生成版本号
  4. Vue.js之v-for
  5. [修正] Berlin 10.1 支持 iPhone 4 (iOS v7.x)
  6. PHP知识库图谱汇总(完善中)
  7. C#~异步编程续~.net4.5主推的await&async应用(转)
  8. linux 修改端口限制
  9. 【BZOJ】【1004】【HNOI2008】Cards
  10. 深入理解Java内存模型(二)——重排序
  11. I.MX6 Linux 自动获取AR1020 event input节点
  12. 用 C# 如何判断数据库中是否存在一个值
  13. QUARTZ CRON
  14. 配置managed server
  15. EOS智能合约存储实例讲解
  16. SQL 的单引号转义字符
  17. luogu P4515 [COCI2009-2010#6] XOR
  18. Django中HtttpRequest请求
  19. [整理]C语言中的static静态对象
  20. win10下安装MySQL5.7.20

热门文章

  1. RabbitMQ入门(1)——Hello World
  2. 代码审查工具Sonarqube安装
  3. Apache的MaxClients设置
  4. LeetCode第[78]题(Java):Subsets(求子集)扩展——第[90]题:Subsets 2
  5. url 、src 、href 的区别
  6. react native easter的分享
  7. Linux下部署 jar包
  8. Tomcat 的context.xml说明、Context标签讲解
  9. Educational Codeforces Round 42 (Rated for Div. 2)F - Simple Cycles Edges
  10. 第六天 文件的基本管理和xfs文进系统备份恢复