0

ユーザーが戻るボタンをクリックしたときに、サーバーからのデータで前のページをリロードしようとしています。Window Before Unload メソッドを使用しています。Ajax 呼び出しは、コントローラーを呼び出してサーバーから値を取得することになっていますが、起動していません。

どんな助けでも大歓迎です。

$(function() {
     $(window).bind('beforeunload', function() {
         $.ajax({
             url: "/test/searchUrl",
             type: "GET",
             cache: false,
             datatype: "text",
             success: function (result) {
                 alert('HI Ajax Call SUCCESS' + result);
             }
         });
         return;
        };
     });
4

2 に答える 2

0

おそらく、呼び出しが非同期であるため、ajax 呼び出しが完了する前にページがアンロードされていると思います。ajax呼び出しを同期にしてみてください。つまり、完了するまでそこに保持されます。

    $(function() {
         $(window).bind('beforeunload', function(){
                 $.ajax({
                     async: false,
                     url: "/test/searchUrl",
                     type: "GET",
                     cache: false,
                     datatype: "text",
                     success: function (result) {
                         alert('HI Ajax Call SUCCESS' + result);
                     }
                 });
                return;
            });
    });

編集:不均一な中括弧と括弧を修正しました

また、クロムは beforeunload で警告をブロックしているようです。おそらく、開発者がページを離れるのを防ぐのを止めるためです。

于 2013-05-09T01:33:50.573 に答える
0

この質問はあなたの質問に答えているように見えます。ダイアログ ボックスが 1 秒間実行されて消えますか? . beforeunload 関数から何も返さないため、ブロックされず、ajax 呼び出しが返される前にページを離れます。ブラウザが表示するメソッドから文字列を返す必要があります。

于 2013-05-09T01:35:22.643 に答える