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 に答える