1

グローバルな ajax 設定を構成したいのは、これがこのステートメントの後に起動されるすべての ajax リクエストに適用されることを意味します。

すべての ajax 応答テキストを確認したいのですが、可能ですか?

応答で「さようなら」を受け取る場合は、他の URL にリダイレクトして、ログイン ページに移動したいと考えています。

「さようなら」はアクションを通じて送信されます。

以下は正しく動作しないサンプルコードです。

$(document).ready(function () {

     $(this).on('ajaxComplete',byebye);

});

function byebye(e, xhr, settings){
        console.log('byebye()'+xhr.responseText);
        if(xhr.responseText=='bye')
        {
            window.location('login.jsp');
        }
}

これにより、コンソールに bye キーワードが出力されますがbyebye()、 ;は呼び出されません。

そのための解決策はありますか?

byeby() の実行は完了しましたが、window.location() の実行はありません。

4

2 に答える 2

1

window.location.replace() は一部のブラウザーでは何もしません。次のように、ページをリダイレクトする正しい方法である window.location に値を割り当てる必要があります。

window.location = newUrl;

おそらく、 ajaxComplete() グローバル関数コールバックを使用して、何が起こっているかを確認できます。

$(document).ready(function () {
    $(this).on('ajaxComplete',byebye);
});
于 2012-10-29T13:27:48.813 に答える
0

試す:

$(document).ready(function () {

     $(window).on('ajaxComplete',byebye);

});

function byebye(e, xhr, settings){
        console.log('byebye()'+xhr.responseText);
        if(xhr.responseText=='bye')
        {
            window.location('login.jsp');
        }
}

windowオブジェクトではなくオブジェクトに割り当てると、スコープ内documentでグローバルに AJAX イベントがトリガーされると思われるため、おそらく問題が解決します。window

于 2012-10-29T13:45:29.400 に答える