2

有点像 jQuery noobie 这里.. 我想知道是否有一种方法可以将多个 AJAX 请求合并到一个 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");
});

是否可以合并两者,所以我只有一个 JSON 对象。如果是这样,这无论如何都会有益吗?或者有没有更实用的方法来处理多个 AJAX 请求?

4

2 回答 2

1

每个 ajax 函数都需要更改为返回一个 Deferred 对象,该对象在所有完成后管理调用的回调。当您的所有 ajax 调用成功完成时,该done()函数被链接以声明要运行的代码。$.when

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 回答