以下方法是在不刷新請求的情況下同一請求提交一次,若有其它要求可在以下注釋掉的方法處修改。
(function ($) {
var pendingRequests = {};
// 所有ajax請求的通用前置filter
$.ajaxPrefilter(function (options, originalOptions, jqXHR) {
// 不重複發送相同請求
var key = generatePendingRequestKey(options);
if (!pendingRequests[key]) {
//storePendingRequest(key, jqXHR);
pendingRequests[key] = jqXHR;
} else {
// or do other
jqXHR.abort();
}
var complete = options.complete;
options.complete = function (jqXHR, textStatus) {
// clear from pending requests
// pendingRequests[key] = null;
//延遲5秒清空數據
/*setTimeout(function(){
delete pendingRequests[key];
},5000);*/
if ($.isFunction(complete)) {
complete.apply(this, arguments);
}
};
});
function generatePendingRequestKey(opts) {
var url = opts.url;
var type = opts.type;
var data = opts.data;
var str = url + type;
if (data) {
str += data;
}
return str;
}
}(jQuery));