0

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

        });          
} 
4

1 回答 1

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

    });          
} 
于 2013-10-05T13:51:34.230 回答