2

ここでは jQuery 初心者のようなものです。複数の AJAX リクエストを 1 つの JSON オブジェクトにマージする方法があるかどうか疑問に思っています。例えば。私が持っている場合...

$.ajax({
  dataType: 'json',
  url: "test1.html",
  context: document.body
}).done(function() { 
  $(this).addClass("done");
});

$.ajax({
  dataType: 'json',
  url: "test2.html",
  context: document.body
}).done(function() { 
  $(this).addClass("done");
});

2つをマージできるので、JSONオブジェクトは1つしかありません。もしそうなら、これはとにかく有益でしょうか?または、複数の AJAX リクエストを処理するより実用的な方法はありますか?

4

2 に答える 2

1

すべての完了後に呼び出しのコールバックを管理する Deferred オブジェクトを返すように、各 ajax 関数を変更する必要があります。このdone()関数は$.when、すべての ajax 呼び出しが正常に完了したときに実行するコードを宣言するために連鎖されています。

このdone()関数は、ajax 呼び出しごとに引数を受け取ります。各引数は、その ajax 呼び出しの成功コールバックに渡される引数の配列を保持します。したがって、ドキュメントを参照すると、Deferred オブジェクトの威力がわかります。

これにより、コードに必要なパンチが追加されます。お役に立てれば。ポール

于 2012-07-18T04:26:20.127 に答える
0

あなたはトリックをすることができます。使い方を間違えないように注意が必要です。完全な実装を行うことができる全体的なロジックを提供しています。

function fireAjax(functions_list)
{
 // The variable functions_list will contain the list of functions like "getUsers,getStatsData,getTopnews"

  $.ajax({
    //bla bla bla
    data:{"getUsers[group_id]":group_id,"getUsers[foo]":bar,"getStatsData[limit]":limit},
    success:function(json_result)
            {
              // You have to form the result also according to the function names like
              /* { getUsers:[user1,user2,user3....],
                   getStatsData[stats1,stats2.....],
                   bla bla bla...
                  } */
                  // handle your responses here one by one
            }
   })

}
于 2012-07-18T04:50:41.870 に答える