0

I have the following script which works fairly nicely to show when ajax stuff is loading:

$("#divLoading").ajaxStart(function () {
    $('#divLoading').show();
});

$("#divLoading").ajaxComplete(function () {
    $('#divLoading').hide();
});

However, this seems to start with a delay after a click event and ends before the content is displayed on the screen, i.e. the following is exagerated, just to explain the issue:

If I click on a button which executes something ajaxy, the loading div appears 5 seconds after clicking the button. The div stays on the screen for 10 seconds, the div disappears and the content change happens 5 seconds after the div has disappeared.

Any idea why this is happening and how I can get the message to display itself as soon as any click event happens, and only disappear when the html has finished loading on the screen?

4

2 に答える 2

1

これは、この関数が実際のajax呼び出し中に実行されるために発生します。クリックハンドラーと、ajax呼び出しの両端で発生するコールバックの前後ではありません。

コードを見ると、おそらくajax呼び出しの前にボタンのクリックイベントでajax呼び出しの準備をしている可能性があります。その後、コールバックでajax呼び出しが完了するため、メッセージは非表示になりますが、それでも完了するコードがあります。

于 2012-09-26T15:16:27.123 に答える
0

私はJQueryのプロではありませんが、プロジェクトでAJAX呼び出しが完了した後に何かを実行する必要がある場合に似たようなものがあり、次のように機能しているようです。

$(document).ajaxStop(function() {
            my_jquery_stuff();
});
于 2012-09-26T15:30:10.473 に答える