4

这是不起作用的代码:

$(document).ajaxStop(function() {
    $(this).unbind("ajaxStop"); //prevent running again when other calls finish

    // Display everything
    display();
});

这是我的 Ajax 函数:

function getAjax(url, callback) {
    jQuery.ajaxPrefilter(function( options ) {
        options.global = true;
    });

    $.ajax({
        url: url,
        type: "GET",
        dataType: "jsonp",
        success: callback
    });
}

为什么ajaxStop()从不开火?

4

1 回答 1

6

您会注意到我正在发出 JSONP 请求。我花了很长时间才找到这个,但可以在这里找到这个问题的答案。

从票:

JSONP 请求不能保证完成(因为没有捕获到错误)。在这种情况下,jQuery 1.5 会强制全局选项为 false,以保证内部 ajax 请求计数器在某一时刻回到零。

如果您希望所有请求都触发事件,无论如何(并且冒着与 1.4.4 相同的不一致的风险),您可以使用以下预过滤器:

jQuery.ajaxPrefilter(function( options ) {
    options.global = true;
});

举个例子:http: //jsfiddle.net/X4JTx/

于 2013-01-09T01:08:27.463 回答