最近遇到一個因為頁面中有多個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了,就可以響應用戶的操作行為了。