【问题标题】:empty array outside each statement jquery ajax json每个语句之外的空数组jquery ajax json
【发布时间】:2011-10-23 06:36:10
【问题描述】:

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

我现在的问题是,我无法在“每个循环”之后将数组发送到 ajax 语句。如果我在“每个循环”中发送数组,它可以工作(此时我将数据保存在 php 文件的会话中,以便我可以看到它的结构并可以相应地调整 pdo 语句),但是我有一个在每个“循环”之后发布请求。我想避免这种情况,所以我只有一个 POST 请求,最后是整个数组。但是如果我在“每个循环”之后使用 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 = {

  }

  dataArray.push(data);

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

});

//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;

  });

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

【问题讨论】:

    标签: jquery ajax arrays json each


    【解决方案1】:

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

    【讨论】:

    • 你的例子基本上和我的一样。我通过使用 $ 更改了变量 dataArr。在它离开之前..但是我在Firebug中得到一个“未定义”并且仍然是一个空数组..我猜出现未定义是因为我没有通过拿走$来全局制作dataArr。 ..所以我仍然有同样的问题。顺便说一句:在您的示例中,缺少每个循环..;)谢谢您的帮助!
    • @sebsemilla 您不希望它是全局的,只是在每个循环的范围之外声明。您不应该将它附加到 jQuery 对象。
    • 我更改了问题中的脚本,就像我现在根据您的建议更改了它一样。但我仍然得到一个空数组。也许你看到了我忽略的错误。谢谢!
    • 呵呵没问题!我认为这可能与异步事实有关。但由于这是我第一次使用 ajax,我对此知之甚少(还)。你能帮我一些输入,我如何让我的脚本等到所有获取完成?谢谢! :)
    • Link
    猜你喜欢
    • 2014-02-01
    • 1970-01-01
    • 2011-02-06
    • 1970-01-01
    • 1970-01-01
    • 2011-10-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多