2

可能重复:
每个()函数内的多个ajax调用..然后在所有这些都完成后做一些事情?

在 for 循环中运行 ajax 后如何执行函数。这里的例子我有这个 ajax 循环运行,

for (var countDevice = 0; countDevice<32; countDevice++){
  var dataString="modbus="+(countDevice+1)+"_"+newDate+".xml";
  $.ajax({
    type: "POST",
    url: "CalculateTable",
    data: dataString,
    dataType: "json", 
    //if received a response from the server
    success: function( device, textStatus, jqXHR) {
     //Do something                                 
    }
  });
}

我想确保只在上面的 for 循环完成之后才在下面运行这个函数。

function drawTable(){
  //Do something
}

任何人都可以就如何使其成为可能提供任何想法吗?感谢您花时间阅读和回答。

4

3 回答 3

2

如果你想以线性方式运行它,你可以这样写你的代码

var countDevice = 0;
(function CountDeviceLoop() {
  if (countDevice == 32) {
    // you can place draw table here or .....
    // drawTable();
    return;
  }

  var dataString="modbus="+(countDevice+1)+"_"+newDate+".xml";
  $.ajax({
    type: "POST",
    url: "CalculateTable",
    data: dataString,
    dataType: "json", 
    //if received a response from the server
    success: function( device, textStatus, jqXHR) {
      //Do something


      //after done sth
      countDevice ++;
      CountDeviceLoop();                             
    }
  });
})();

// here
// drawTable();

因为ajax方法是异步的,你可以用这种方式运行你的循环......或者如果你想使用'for循环'来运行你的程序,你可以使用@MadSkunk的代码

于 2012-12-26T06:29:18.703 回答
0
for (var countDevice = 0; countDevice<=32; countDevice++)
{
if (countDevice == 32)
{
drawTable();
}
else {
var dataString="modbus="+(countDevice+1)+"_"+newDate+".xml";
$.ajax({
type: "POST",
url: "CalculateTable",
data: dataString,
dataType: "json",

//if received a response from the server
success: function( device, textStatus, jqXHR) {
//Do something
}
});
}
}
于 2012-12-26T05:01:31.570 回答
-1

哟也可以试试

$('your selector').ajaxComplete(function() {
  drawTable();
}); 
于 2012-12-26T05:01:10.640 回答