PHP字符串数组到Javascript对象数组,使用AJAX调用

时间:2018-01-10 14:13:39

标签: javascript php jquery arrays ajax

我的PHP脚本通过javascript中的AJAX调用返回以下字符串:

$maaltijdPrijzenArray = "[";
...while...
    $maaltijdPrijzenArray .= "{id: $id, maaltijdprijs: \"$kostprijs\", verkoopprijs: \"$verkoopprijs\"},";
...endwhile...
$maaltijdPrijzenArray = rtrim($maaltijdPrijzenArray, ',');
$maaltijdPrijzenArray .= "]";
$response['arrayMaaltijden'] = $maaltijdPrijzenArray;

echo json_encode($response);

所以示例输出是:

$maaltijdPrijzenArray = "[ 
    {id: 1, maaltijdprijs: "23.23", verkoopprijs: "44.34" },
    {id: 2, maaltijdprijs: "34.34", verkoopprijs: "55.55"} ]";

我将此输出发送到Javascript中的AJAX调用(我的ajax调用具有dataType:' JSON'启用),我希望我的数组采用相同的格式,但现在使用Javascript。所以期望的输出必须是javascript:

var maaltijdPrijzenArray = [ 
        {id: 1, maaltijdprijs: "23.23", verkoopprijs: "44.34" }
        {id: 2, maaltijdprijs: "34.34", verkoopprijs: "55.55"} ]

从此我可以简单地得到" maaltijdprijs"和" verkoopprijs"通过调用

var result = $.grep(maaltijdPrijzen, function(e){ return e.id == id; });

但是如何将PHP数组转换为Javascript?

2 个答案:

答案 0 :(得分:0)

致谢:@Sean

而不是连接字符串 - > $maaltijdPrijzenArray .= "{id: $id,...,将其作为php数组执行 - > $maaltijdPrijzenArray = array(); ...while... $maaltijdPrijzenArray[] = array("id"=>$id,....这也可以摆脱对rtrim()

的需求

将我的PHP更改为:

$maaltijdPrijzenArray = array();
$maaltijdPrijzenArray[] = array("id"=>$id, "maaltijdprijs"=>$kostprijs, "verkoopprijs"=>$verkoopprijs);
$response['arrayMaaltijden'] = $maaltijdPrijzenArray;
echo json_encode($response);

它在Javascript中工作:)

答案 1 :(得分:0)

将PHP数组作为带有[json_encode][1]函数的JSON字符串进行回显。

然后,当您在JavaScipt中读出此String时,可以将其转换为具有[JSON.parse][2]函数的数组。

1:http://php.net/manual/en/function.json-encode.php 2:https://www.w3schools.com/js/js_json_parse.asp