0

getJSON で div の画像 URL コンテンツを読み込みます。完了すると変数が変更されるので、AJAX が完了したことがわかります。

AJAX が完了したことを他の関数はどのように認識していますか? ここに私が欲しいものがあります:

ユーザーがアルバム div に移動すると、AJAX が完了しているかどうかが確認されます。AJAX が行われていない場合は読み込み中の画像が表示されますが、AJAX が完了すると、AJAX が完了したことをどのように認識して読み込み中の画像が表示されなくなるのでしょうか。

私の考え:

1/ while ループを使用して AJAX ステータス変数を継続的にチェックすると、すべてがフリーズし、実際には機能しません。

2/ AJAX のロード中にユーザーが自由にできるようにしたいので、すべてのナビゲーション コードをコールバック関数に入れることはできません。すべてをコールバック関数に入れると、混乱したコードが作成されます

この問題はどのように解決できますか?

4

5 に答える 5

3

変数をポーリングして AJAX が完了したかどうかを「チェック」するべきではありません。できれば jQuery の「遅延オブジェクト」を使用して、完了時に自動的に呼び出されるコールバックを登録する必要があります。

$.getJSON(...).done(function(data) {
    // my ajax is finished!
});

最終的に、すべてのコードをコールバックに入れる必要はありませんが、最終的にコールバックによって呼び出されるようにする必要があります。

于 2013-05-30T11:04:32.607 に答える
2

ajax 呼び出しには、「success: function(data)」と呼ばれる拡張機能が 1 つあります。データには、リクエストから取得したものがすべて含まれます。

   $.ajax({
   type: "POST",
   dataType="json",
   url:url,
   data:{id:x},
   success : function(result){
   //stop loading message here
   }
于 2013-05-30T11:08:18.290 に答える
1

グローバル ajax を使用できます: {読み込み中の画像を表示する必要がないリクエストの場合は、オプションを使用できますglobal:false}

$(document).on('ajaxStart',function(event, jqxhr, settings){
    //show loading img
})
.on('ajaxComplete',function(event, jqxhr, settings){
    //hide loading img
})
于 2013-05-30T11:06:47.010 に答える
1

「完了」コールバックがあるドキュメントを確認してください

于 2013-05-30T11:06:52.913 に答える
0
$.ajax({
   type: "POST",
   dataType : "json",
   ...
}).done(function(data) {
 // Stuff you want to do after ajax complete
});

また

$(document).ajaxComplete(function() {
   // Ajax Completed
});
于 2013-05-30T12:33:49.587 に答える