0

私はこのコードを持っています

$(document).ajaxStart($.blockUI).ajaxStop($.unblockUI);

一度だけ動作しない限り、期待どおりに動作します。ページを更新した後、上記のコードは正常に実行されますが、以前と同じように 1 回しか機能しません。それを修正する方法はありますか?

4

1 に答える 1

1

.ajaxStart のドキュメントをお読みください。

次のように説明されています。

説明: 最初の Ajax リクエストの開始時に呼び出されるハンドラーを登録します。これは Ajax イベントです。

Ajax リクエストが送信されようとしているときはいつでも、jQuery は他に未解決の Ajax リクエストがあるかどうかをチェックします。進行中のものがない場合、jQuery は ajaxStart イベントをトリガーします。この時点で、.ajaxStart() メソッドで登録されたすべてのハンドラーが実行されます。

これは、最初の ajax リクエストが終了せずに別の ajax リクエストを送信した場合、このイベントが再度発生しないことを意味します。

次に、動作が ajaxStop の場合と同じであると簡単に推測できます。 ここにドキュメントがあります

説明: すべての Ajax リクエストが完了したときに呼び出されるハンドラーを登録します。これは Ajax イベントです。

Ajax リクエストが完了するたびに、jQuery は他に未解決の Ajax リクエストがあるかどうかをチェックします。何も残っていない場合、jQuery は ajaxStop イベントをトリガーします。この時点で、.ajaxStop() メソッドに登録されているすべてのハンドラーが実行されます。ajaxStop イベントは、最後の未処理の Ajax リクエストが beforeSend コールバック関数内で false を返すことによってキャンセルされた場合にもトリガーされます。

これは、予想どおり、現在実行中の ajax リクエストがすべて終了した場合にのみ、このイベントが発生することを意味します。

または多分私はあなたの問題を理解していませんでしたか?

編集

また、 ajaxComplete を試すこともできます(リンクを挿入するのに十分な担当者がいません)

(グローバル イベント) このイベントは、完了イベントと同じように動作し、Ajax 要求が終了するたびにトリガーされます。

このイベントは、ajax 呼び出しの成功または失敗に関係なく発生します。ただし、完了したリクエストごとに呼び出されます。

于 2013-03-23T14:18:21.497 に答える