3

jQuery 有一些中止 API,可用于尝试中止请求。jQuery 真的可以自己决定中止 Ajax 请求吗?

例如,假设有一堆 Ajax 请求正在运行,其中一个返回了一些奇怪的请求,因此 jQuery 决定中止所有其他请求。

这会发生吗?

4

1 回答 1

5

除了timeout选项,一般 jQuery 不决定。决定。

常规是始终参考$.ajax()返回您的内容。

意思是,而不是仅仅调用$.ajax(),而是这样做,xhr = $.ajax()

$.ajax()返回一个 jqXHR 对象,它只是 Ajax 功能的 jQuery 包装器。见http://api.jquery.com/jQuery.ajax/

现在你有了xhr,你可以xhr.abort()从任何你想要的地方打电话。

真的取决于你如何设计它,但会调用 .abort() 。以下可能是一种可能的用例。

一个轮询函数和另一个检查用户是否空闲时间过长的函数。

如果用户空闲,则中止轮询 ajax,然后可能会提示一条消息,警告用户会话结束。

示例用例:

var mainXHR; // this is just one reference. 
             // You can of course have an array of references instead

function mainPollingFunction () {
    mainXHR = $.ajax({
        url: 'keepAlive.php',
        // more parameters here
        timeout: 10000, // 10 seconds
        success: function () {
            // server waits 10 seconds before responding
            mainPollingFunction(); // initiate another poll again
        }
    });
}

// Let's say this function checks if the user is idle
// and runs when a setTimeout() is reached
function otherFunction () {
    if ( /* if user is idle */ ) {
        if (mainXHR) mainXHR.abort(); // abort the ajax in case it's still requesting
    }
}
于 2013-04-24T14:04:53.973 回答