ajaxStop()不会触发

Wil*_*lis 4 javascript jquery

这是无效的代码:

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

    // Display everything
    display();
});
Run Code Online (Sandbox Code Playgroud)

这是我的Ajax功能:

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

    $.ajax({
        url: url,
        type: "GET",
        dataType: "jsonp",
        success: callback
    });
}
Run Code Online (Sandbox Code Playgroud)

为什么ajaxStop()永远不会开火?

Wil*_*lis 5

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

从机票:

JSONP请求无法保证完成(因为未捕获错误).在这种情况下,jQuery 1.5强制全局选项为false,以便保证内部ajax请求计数器在某一点或另一点恢复为零.

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

jQuery.ajaxPrefilter(function( options ) {
    options.global = true;
});
Run Code Online (Sandbox Code Playgroud)

例证:http: //jsfiddle.net/X4JTx/