我有一个对象数组,我想为每个对象发起一个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
})
});
}
答案 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]);
}