我有循环遍历多个异步AJAX调用。该调用以循环迭代作为索引。调用完成后,数据将根据索引存储在数组中。
但是,在success函数中返回的索引与提供给初始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 :(得分: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
});
}