【问题标题】:How to cancel pending Jquery Ajax call?如何取消挂起的 Jquery Ajax 调用?
【发布时间】:2014-02-12 20:55:05
【问题描述】:

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

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

request.abort();

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

如何取消该 Ajax 请求?

【问题讨论】:

  • 每个人似乎都在暗示您正在做的事情是正确的,请在此处查看潜在的重复:stackoverflow.com/questions/446594/… 如果您想在设定的时间段后中止,您也可以在请求上设置超时。

标签: javascript jquery ajax long-polling


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-10-04
    • 1970-01-01
    • 1970-01-01
    • 2019-12-31
    • 2022-06-24
    • 1970-01-01
    • 2016-10-29
    • 1970-01-01
    相关资源
    最近更新 更多