2013-10-05 48 views
0

我有循环通过多个异步AJAX调用。该调用将循环迭代作为索引。调用完成后,根据索引将数据存储在数组中。AJAX异步返回错误索引

但是,成功函数中返回的索引与馈送给初始AJAX调用的索引不同。呼叫是否有一个很好的方式可以在呼叫初次馈送成功时返回相同的索引?

var ptype = 'fp'; 
    var pnum = 2; 
    var data = new Array(); 

    for(var i = 1; i <= 5; i++){ 
     call_general_forecast(ptype,i,pnum); 
    } 

function call_general_forecast(ptype, i1, pnum1){ 
     index = pnum1*5 + i1; 
     $.ajax({ 
      url: '', 
      data : { stock_name : stock_name, pattern: ptype, specificity : i1}, 
      type : 'get', //or 'post', but in your situation get is more appropriate, 
      dataType : 'json', 
      success : function(r) { 
       data[index] = r; 
       alert(index); 
      }, 
      async: true 

     });   
} 
+0

如果您必须并行运行多个AJAX调用,则可以将索引传递到您的服务器并将其作为结果的一部分返回。 –

回答

1

您正在使用index作为全局变量。使用关键字var将其声明为局部变量,闭包将为您完成剩下的工作。所有成功函数都会有正确的索引(与请求发出时的值相同)。

function call_general_forecast(ptype, i1, pnum1){ 
    var index = pnum1*5 + i1; 
    $.ajax({ 
     url: '', 
     data : { stock_name : stock_name, pattern: ptype, specificity : i1}, 
     type : 'get', //or 'post', but in your situation get is more appropriate, 
     dataType : 'json', 
     success : function(r) { 
      data[index] = r; 
      alert(index); 
     }, 
     async: true 

    });   
} 
+0

你钉了它。谢谢!我会投票给你,但我需要15个代表点-_- –