如何取消挂起的Jquery Ajax调用?

时间:2014-02-12 20:55:06

标签: javascript jquery ajax long-polling

我有支持长轮询的REST Web服务。如果我发出Jquery Ajax请求,如果服务器有任何新数据,它将发送给我。如果服务器没有更新,则请求将处于暂挂状态。现在,如果用户突然注销,我想取消该请求。我试过像

var request=$.ajax({
--------
-
-------
});

request.abort();

但我在这里收到错误,因为请求没有收到来自服务器的任何数据(原因仍处于暂挂状态)。所以它是'null'。

如何取消该Ajax请求?

1 个答案:

答案 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();
}