4

jqueryでajaxStop関数を使用しようとしていますが、起動できません。何かアイデアはありますか?

私がやろうとしているのは、各アンカータグをループして、その中のコンテンツを更新することです。そこから、ajaxstopイベントを使用してスクリプトを起動し、更新に基づいてアンカーを再編成します。

助けてくれてありがとう

jQuery(document).ready(function($) {
    function updateUsers() {
        $(".twitch_user").each(function(index, user) {
            $.ajax({ url: "https://api.twitch.tv/kraken/streams/" + $(user).attr("id") + "?callback=?", success: function(d) {
                if(d.stream) {
                    $(user).addClass("online");
                    $(user).removeClass("offline");
                    $(user).children(".viewers").text(d.stream.viewers + " viewers");
                } else {
                    $(user).addClass("offline");
                    $(user).removeClass("online");
                    $(user).children(".viewers").text("0 viewers");
                }
                console.log(d);
            }, dataType: "json"});
        });
    }
    //$(document).ajaxStart(function() {
    //  console.log("Event fired!");
    //  updateUsers().delay(2000);
    //})
    $(document).ajaxStop(function() {
        console.log("Event fired!");
        // updateUsers().delay(2000);
    });
    updateUsers();
});
4

1 に答える 1

3

このチケットで説明されているように、JSONPリクエストを実行すると、明らかにグローバルハンドラーがオフになります。

JSONPリクエストの完了は保証されていません(エラーがキャッチされないため)。その場合、jQuery 1.5はグローバルオプションをfalseに強制し、内部ajaxリクエストカウンターがいずれかの時点でゼロに戻ることが保証されます。

JSONPがあなたの意図であるかどうかはわかりませんが?callback=?、URLの最後にあると、jQueryはそれをそのように処理します。

解決策は、次のように設定することでした。

jQuery.ajaxPrefilter(function( options ) {
    options.global = true;
});
于 2013-01-29T19:31:51.883 に答える