每个语句外部的空数组jquery ajax json

每个语句外部的空数组jquery ajax json,jquery,ajax,arrays,json,each,Jquery,Ajax,Arrays,Json,Each,我有一个jquery脚本,它从不同的站点收集数据,并通过ajax和php将数据保存到sql数据库中。此时,脚本将分别保存站点中的每个集合。我想改变这一点,以便脚本收集数组中的所有数据,并在收集完成后将数组传递给php文件,该文件将保存在数据库中 我现在的问题是,我不能在“每个循环”之后将数组发送到ajax语句。如果我在“每个循环”中发送数组,它就会工作(此时我将数据保存在php文件的一个会话中,这样我就可以看到它的结构并相应地调整pdo语句),但是在每个“循环”之后我都有一个post请求。我希望

我有一个jquery脚本,它从不同的站点收集数据,并通过ajax和php将数据保存到sql数据库中。此时,脚本将分别保存站点中的每个集合。我想改变这一点,以便脚本收集数组中的所有数据,并在收集完成后将数组传递给php文件,该文件将保存在数据库中

我现在的问题是,我不能在“每个循环”之后将数组发送到ajax语句。如果我在“每个循环”中发送数组,它就会工作(此时我将数据保存在php文件的一个会话中,这样我就可以看到它的结构并相应地调整pdo语句),但是在每个“循环”之后我都有一个post请求。我希望避免这种情况,这样我就只有一个POST请求,并且在最后包含整个数组。但是如果在“每个循环”之后使用ajax post请求,则得到的数组就是空的。我认为我将数组设置为全局数组,这样我就可以在each语句之外使用它,但由于某些原因它不起作用

你知道如何解决这个问题吗?以下是脚本:

$('#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 = {

  }

  dataArray.push(data);
//如果我在这里使用$.ajax语句,它会工作并提交正确的数组。但是我对每个循环都有一个POST请求。。 });

}))

你知道问题出在哪里吗?如果你需要更多的信息,请告诉我。
非常感谢!:)

[Edit]lol我是个白痴,无论如何,数组为空的原因是get请求是异步的,并且在发送最终数组之前可能没有完成。
要么使GET同步(可能不是您想要做的),要么等待发送最终数组,直到所有GET都完成。

您的示例基本上与我的示例相同。我使用$更改了变量dataArr。在它消失之前。。但是我在Firebug中得到了一个“未定义”的数组,仍然是一个空数组。。我猜出现未定义是因为我没有通过去掉$来全局生成dataArr。。所以我还是有同样的问题。顺便说一句:在您的示例中,每个循环都缺少….;)谢谢你的帮助@sebsemilla您不希望它是全局的,只是声明在每个循环的范围之外。您不应该将其附加到jQuery对象。我在问题中更改了脚本,就像我现在根据您的建议更改脚本一样。。但我仍然得到一个空数组。。也许你看到了我忽略的一个错误。。非常感谢。呵呵,没问题!我认为这可能与异步事实有关。但由于这是我第一次使用ajax,我对这方面不太了解。。你能帮我输入一些信息吗?我怎样才能让我的脚本等待所有的获取完成?谢谢!:)看见
//If I use the $.ajax here, the array I get is just empty. Any Idea how to solve this?
data = YAHOO.lang.JSON.stringify(dataArray);      



  $.ajax({
    type:           'post',
    cache:          false,
    url:            'test.php',
    data:           {myJson:  data}
    });

  return false;

  });