2

このコード (つまり、ajaxStart/ajaxStop) は、Google Chrome でのみ機能しません。

$.ajax({ type: "GET",
                url: '<?=base_url();?>' + url,
                async: false,
                success : function(html)
                {
                    modal = html;
                }
            });

$(document).ready(function() {
    $(document)
        .ajaxStart(function () {
            $('#spinner').show();
        })
        .ajaxStop(function () {
            $('#spinner').hide();
        });
});

ChromeでajaxStart/ajaxStopを使用するにはどうすればよいですか?

更新:エラーはありません。google chrome は ajaxStart/ajaxStop アクションを無視します。document の代わりに html と body も機能しません。

バックエンドでは、読み込みプロセスを確認するために 5 秒間スリープを使用します。

はい、Google Chrome の最新バージョンを使用しています。

@Murali、それは魔法です。ブラウザは show() を無視します。しかし、alert() の後/前に書くと、すべて問題ありません。どうして?

4

3 に答える 3

1

私は同じ問題を抱えていました。
解決策は、ajaxSuccess を使用することでした。
これがグローバル イベント アプローチです。ローカル イベントを使用することもできます。jQuery Ajax Events Page
で違いについて読むことができます

ajaxComplete と ajaxSuccess の違いは次のとおりです。
ajaxSuccess:このイベントは、リクエストが成功した場合にのみ呼び出されます (サーバーからエラーがなく、データにエラーがない)。
ajaxComplete:このイベントは、リクエストが成功したかどうかに関係なく呼び出されます。同期リクエストであっても、常に完全なコールバックを受け取ります。Ajax リクエストが終了するたびにトリガーされます。

別の問題は、それを外部で使用する必要があることです$(document).ready(function() {
。追加の問題は、未解決の Ajax リクエストがあることです。ドキュメントを見る

jQuery 1.11.1 を使用しています。
Chrome 42.0.2311.90 m および 42.0.2311.135 m、Firefox 37.0.2 でテスト済み

$(document).on({
    ajaxStart: function() {
        $('#spinner').show();
    },
    ajaxSuccess: function() {
        $('#spinner').hide();
    }
});
于 2015-04-29T08:07:52.270 に答える
1

ajaxCompleteから移動してdocument.ready使用してみてください。リクエストにエラーがあっても実行されます

 <script type="text/javascript">
    $(document).ajaxStart(function(event, xhr, settings) {
        alert('started');
        $('#spinner').show();
    })
    .ajaxComplete(function(event, xhr, settings) {
        alert('completed');
        $('#spinner').hide();
    });
 </script>
于 2013-10-03T11:46:45.973 に答える