0

我正在尝试使用 JQuery 编写一些 JS 来获取服务器列表,然后每次使用帖子并返回一些 JSON 请求有关每个服务器的数据。实际上是一个嵌套的 POST。

  1. AJAX POST 返回包含服务器列表的 JSON
  2. 遍历服务器列表并执行 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');
}

谢谢你的帮助!

4

0 回答 0