我有一个在后台运行的ajax ..
var sTimeOut = function () {
$.ajax(
{
type: "POST",
url: '@Url.Action("checkJobIDs")',
dataType: "json",
async: true,
success: function (data) {
}
});
}
var interval = 10000;
setInterval(sTimeOut, interval);
搜索一个元素我想停止在后台运行的另一个ajax。
$.ajax(
{
type: "POST",
url: '@Url.Action("searchData")',
dataType: "json",
mtype: "post",
data: { str: str },
async: true,
complete: function () { $(sTimeOut).hide(); },
success: function (data) {
search(data.searched[0]);
}
});
如何在第二个ajax上工作时阻止第一个ajax?
答案 0 :(得分:0)
您可以声明一个对象以保留当前正在执行的请求,并检查搜索是否正在运行。如果搜索正在运行,则另一个重新请求将被削减。
var request = {
xhr: {},
isSearching: false
};
var sTimeOut = function () {
if(!request.isSearching) // prevent to run other request when is searching
{
request.xhr = $.ajax(
{
type: "POST",
url: '@Url.Action("checkJobIDs")',
dataType: "json",
async: true,
success: function (data) {
}
});
}
}
var interval = 10000;
setInterval(sTimeOut, interval);
何时搜索请求被中止并阻止执行其他人。搜索完成后,您可以在后台恢复请求。
$.ajax(
{
type: "POST",
url: '@Url.Action("searchData")',
dataType: "json",
mtype: "post",
data: { str: str },
async: true,
beforeSend: function() { // stop background process
request.isSearching = true;
request.xhr.abort()
},
complete: function () { // resume background process
request.isSearching = false;
},
success: function (data) {
search(data.searched[0]);
}
});