AJAX异步返回错误的索引

时间:2013-10-05 13:41:09

标签: javascript jquery ajax asynchronous

我有循环遍历多个异步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

        });          
} 

1 个答案:

答案 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

    });          
}