我在我的应用程序中使用Ajax函数使用Select2插件。
这是我的代码
$(".some-field").select2({
ajax: {
url: "URL",
dataType: 'json',
delay: 250,
data: function (params) {
return {
q: params.term,
page: params.page
};
},
processResults: function (data, params) {
//Results
};
},
cache: true
},
});
在发送任何Ajax请求之前,我需要中止当前待处理的请求。
我应该以哪种方式进行操作?提前感谢所有帮助
答案 0 :(得分:2)
我发现(感谢@PeterDarmis的建议)插件在发送新请求之前中止每个请求。正如 Select2 ajax.js 第46-53行AjaxAdapter.prototype.query
方法中所定义。
if (this._request != null) {
// JSONP requests cannot always be aborted
if ($.isFunction(this._request.abort)) {
this._request.abort();
}
this._request = null;
}
答案 1 :(得分:1)
这个想法是捕获ajax对象,并在beforeSend Function中发送新请求时取消先前的请求。
var currentRequest = null;
$(".some-field").select2({
currentRequest = ajax: {
url: "URL",
dataType: 'json',
delay: 250,
data: function (params) {
return {
q: params.term,
page: params.page
};
},
beforeSend : function() {
if(currentRequest != null) {
currentRequest.abort();
}
},
processResults: function (data, params) {
//Results
};
},
cache: true
},
});