我有一个带有.get的jquery .each循环。我想等到循环中的所有内容都完成后(每个都将.complete一个新元素推送到数组中),然后对一个php文件发出ajax post请求以保存创建的数组。我不知道如何让ajax请求等到每个完成。到目前为止,ajax非常快速地发射,因此阵列仍然是空的,因为当它们发射时仍然没有完成。也许你有个主意。
这是脚本:
$('#ScanButton, .ScanButton').click(function() {
var array = ["http://www.xyz.com/bla/bla/summary.html",
"http://www.xyz.com/blu/blu/summary.html",
];
dataArray = [];
$.each(array, function(n, val) {
$.get(val, function(res) { //get the html source of this website
var data = {
}
}).complete(function() {
alert("complete");
dataArray.push(data);
});
});
data = YAHOO.lang.JSON.stringify(dataArray);
$.ajax({
async: false,
type: 'post',
cache: false,
url: 'test.php',
data: {myJson: data}
});
return false;
});
我感谢任何帮助。谢谢:))
答案 0 :(得分:1)
Underscore.js有elegant solution to this sort of problem。
var renderNotes = _.after(notes.length, render);
_.each(notes, function(note) {
note.asyncSave({success: renderNotes});
});
// renderNotes is run once, after all notes have saved.