我正在尝试使用 JQuery 编写一些 JS 来获取服务器列表,然后每次使用帖子并返回一些 JSON 请求有关每个服务器的数据。实际上是一个嵌套的 POST。
- AJAX POST 返回包含服务器列表的 JSON
- 遍历服务器列表并执行 AJAX POST,该 POST 将返回有关每个服务器的一些数据
问题:对于最后一个服务器,第二个 AJAX POST 只发生一次 - 但是(例如,如果在第一个帖子中返回 5 个服务器)警报(compName)发生了 5 次,并且 doSomething 函数只被调用一次. 在网络跟踪中,POST 进行了 5 次。
我尝试了以下方法来修复它:
- 使 POST 同步
- 使用 jQuery 承诺()
- 从 POST 更改回调函数
- 将 $.each 更改为不同的迭代函数
无论如何,这里是代码,首先调用 getServerList():
var server = 'localhost';
function getServerList() {
//get data back from web page listing server options
$.ajax({
type: "POST",
url: "http://"+server+"/GetJSONData.aspx",
data: { listservers: "true" },
dataType: "json"
}).done(function( data ) {
$.each(data, function() {
loadServer(data['serverName']);
});
});
};
function loadServer(serverName)
{
var URL = "http://"+server+"/GetJSONData.aspx";
var data = new Object();
data.server = serverName;
alert(compName);
$.post(URL, data, function(resp) {
doSomething(resp);
}, 'json');
}
谢谢你的帮助!