最近遇到一个因为页面中有多个ajax request请求,导致页面中的其它请求,如link,button事件被堵塞,不被响应。
想到之前学习jquery的ajax时,其帮助文档有提到ajax request对象的abort功能。那就想到解决这个问题可以将页面的所有的ajax reqeust全部abort掉。后面在google查到jquery中已经有一个AjaxManager库,几乎就是为我所遇到的这个问题而生的。哈哈。。。下面介绍一下AjaxManager的简单的用法:(v2.5.4)
project site: http://plugins.jquery.com/project/AjaxManager
//需要先建立AjaxManager(直接呼叫$.manageAjax.Add也會自動建立)
var ajaxManager = $.manageAjax.create('cacheQueue', {
queue: true,
cacheResponse: true
});
这里的setting,default如下:
queue: true, //clear
maxRequests: 1,
abortOld: false,
preventDoubbleRequests: true,
cacheResponse: false
ajaxManager.add({
success: function(html) {
$('ul').append('<li>'+html+'</li>');
},
url: 'test.html'
});
//另一種使用方式
$.manageAjax.add('clearQueue', {
success: function(html) {
$('ul').append('<li>'+html+'</li>');
},
url: 'test.html'
});
abort使用:ajaxManager.abort(); 这样子就把队列中的request全abort了,就可以响应用户的操作行为了。