ajaxStop()不触发

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()永远不会触发?
1个回答

6
你会注意到我正在进行JSONP请求。我花了很长时间才找到这个问题的答案,它可以在这里找到。
从票据中得知:
JSONP请求并不能保证完成(因为错误没有被捕获)。在这种情况下,jQuery 1.5会强制将全局选项设置为false,以确保内部ajax请求计数器在某一时刻能够恢复到零。
如果你想让所有请求都触发事件,无论如何(尽管存在与1.4.4相同的不一致性风险),你可以使用以下预过滤器。
jQuery.ajaxPrefilter(function( options ) {
    options.global = true;
});

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接