【问题标题】:Passing multiple PHP arrays to JavaScript on AJAX Success在 AJAX 成功时将多个 PHP 数组传递给 JavaScript
【发布时间】:2013-04-14 16:49:58
【问题描述】:

我很难使用 AJAX 请求将数组从 PHP 页面传递到 JavaScript。

我必须将信息从多个 php 数组传递到 javascript。我知道我可以为此使用 json_encode,但是,我很难实现这一点。 $name 数组似乎没有被传递,此外,我需要将所有数组传递给 javascript 而不仅仅是 $name。

感谢您对此提出的任何建议。

提前非常感谢!

这是我尝试传递 $name 数组的方法(代码 sn-ps):

PHP

while($row2 = mysqli_fetch_array($results2)){
    $name[$i] = $row2['prod_name'];
    $price[$i] = $row2['price'];
    $upc[$i] = $row2['upc'];
    $quantity[$i] = $row2['quantity'];
}
echo json_encode($name);

AJAX

$.ajax({
    url: "invoice-get-data.php?hotItems=1&getArrays=1",
    dataType: "json",
    success: function(data){
        alert(data[0]);
    }
});

【问题讨论】:

  • alert(data) 提供了什么? undefined?
  • 您提醒name[0],但您将信息的成功返回分配给data...
  • @ArtyomNeustroev,感谢您的回复。没有任何警报,也没有错误消息...
  • @CaseyFlynn,感谢您的回复。这些只是代码 sn-ps,我也从未定义过 $results2 或任何数组。请假设它们都已定义并正常工作,发布的代码仅与数组从 php 到 javascript 的传递有关。
  • @AnchovyLegend 我们不能假设任何事情,因为你没有表现出足够的工作。如果它们只是 sn-ps 并且您认为它们应该可以工作,那么请显示您的实际代码,以便可以正确查看。

标签: php javascript ajax


【解决方案1】:

后端:

while($row2 = mysqli_fetch_array($results2)){
    $name[] = $row2['prod_name'];
    $price[] = $row2['price'];
    $upc[] = $row2['upc'];
    $quantity[] = $row2['quantity'];
}
echo json_encode(array($name, $price, $upc, $quantity));

前端:

$.ajax({
    url: "invoice-get-data.php?hotItems=1&getArrays=1",
    dataType: "json",
    success: function(data){
        data = JSON.parse(data);
        alert(data[0]);
    }
});

【讨论】:

  • 感谢您的回复。但是,没有任何警报,也没有错误消息。
  • @AnchovyLegend 那是因为你再次将返回分配给data成功,但尝试提醒name,它没有分配。
  • @Jon,所描述的问题是在将name 更改为data 之后。
  • 谢谢@zavg,但是,即使添加了JSON.parse,仍然没有任何警报,没有错误
  • @AnchovyLegend 将 AJAX 请求的 URL 放入 URL 中会发生什么?你得到什么输出?在你的问题中表明这一点?
【解决方案2】:

$i 在 while 循环中似乎没有改变,所以最后一个值不断被新值覆盖。你可以使用:

$name = array(); //setup array
while($row2 = mysqli_fetch_array($results2)){
    $name[] = $row2['prod_name']; //add to the end of the array
}
echo json_encode($name);

您也可以使用 'die' 来回显您的 html 代码,以确保之后不会执行任何其他操作 die(json_encode($name));

你的 jquery 返回变量 data 所以使用 data:

$.ajax({
    url: "invoice-get-data.php?hotItems=1&getArrays=1",
    dataType: "json",
    success: function(data){
        alert(data[0]);
    }
});

【讨论】:

  • 感谢您的回复。不,$i 不是常量,这些只是代码 sn-ps。
  • 或者只是将 $row2 作为一个整体而不是单独数组中的所有元素添加。
  • @AnchovyLegend 恕我直言,如果您进行总结,请至少总结为工作样本。您发布的代码至少包含 2 个与您的问题无关且显然与您的“sn-ping”相关的错误。
  • 为什么这个答案被否决了,它似乎正确地回答了这个问题
  • 感谢您的编辑,即使经过这些修改,仍然没有任何警报,也没有产生错误:/ 有什么建议吗?
猜你喜欢
  • 1970-01-01
  • 2010-10-17
  • 2021-02-10
  • 1970-01-01
  • 2011-07-09
  • 2015-08-01
  • 1970-01-01
  • 2015-01-16
  • 1970-01-01
相关资源
最近更新 更多