在多个jquery ajax请求上更新相应的对象

时间:2014-01-28 09:55:52

标签: javascript jquery json

我有一个对象数组,我想为每个对象发起一个ajax请求,该请求的结果应该存储在该请求的相应对象中

说我有

var dataArray = [{url,data},{url,data},{url,data},{url,data}];
for (var i=0;i<dataArray.length;i++){
    $.get( dataArray[i].url, function() {
        .done(function() {
            //update dataArray[i].data
        })
        .fail(function() {
            //update dataArray[i].data
        })
    });
}

这样做的正确方法是什么

p.s:我不想使用async:false,因为我想更新状态栏


更新

确实像这样做了

var dataArray = [{url,data},{url,data},{url,data},{url,data}];
for (var i=0;i<dataArray.length;i++){
    $.get( dataArray[i].url, function() {
        .done(function(Data) {
            dataArray[i].data = data
        })
        .fail(function() {
            //Error handling
        })
    });
}

2 个答案:

答案 0 :(得分:0)

尝试这种方法。在传递对象引用时,更新数据时应更新原始数组。对不起,我没有提供jsbin,在工作中被阻止。

function loopThrough() {
  var dataArray = [{url,data},{url,data},{url,data},{url,data}];
  dataArray.forEach(function(element) {
    getData(element)
  })
}

function getData(element) {
  $.get( element.url)
     .done(function() {
        //update element.data
    })
    .fail(function() {
        //update element.data
    })
});
}

答案 1 :(得分:0)

使用传入的dataArray [i]将.get函数封装在自己的函数中。

var dataArray = [{url,data},{url,data},{url,data},{url,data}];
for (var i=0;i<dataArray.length;i++){
   $(function(data) {
      $.get(data.url, function() {
      })
      .done(function() {
          //update data.data
      })
      .fail(function() {
          //update data.data
      })
    });
   }, dataArray[i]);
}