让ajax等到每个get完成

时间:2011-08-09 15:54:23

标签: ajax get each activity-finish

我有一个带有.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;

});

我感谢任何帮助。谢谢:))

1 个答案:

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