我有支持长轮询的REST Web服务。如果我发出Jquery Ajax请求,如果服务器有任何新数据,它将发送给我。如果服务器没有更新,则请求将处于暂挂状态。现在,如果用户突然注销,我想取消该请求。我试过像
var request=$.ajax({
--------
-
-------
});
request.abort();
但我在这里收到错误,因为请求没有收到来自服务器的任何数据(原因仍处于暂挂状态)。所以它是'null'。
如何取消该Ajax请求?
答案 0 :(得分:0)
abort被jquery视为错误,所以你需要在失败处理程序中检查你的jqXHR的statusText,看它是否已经中止并相应地处理。
以下代码说明:
var jqXHR = $.ajax({
url: '...'
});
// jqXHR.abort() is regarded as an error, so your logic for detecting
// it should go in the fail handler. Here's how you could set this up:
jqXHR.fail(function(args) {
if (jqXHR.statusText == 'abort') {
console.log('AJAX aborted');
return;
}
// Other error processing goes here.
});
// If pending, abort AJAX call
if (jqXHR.state() == 'pending') {
jqXHR.abort();
}