javascript - 为什么我收到有关 "unexpected non-whitespace after JSON data"的错误消息

标签 javascript php arrays json

谁能告诉我这是什么问题:

我正在将一个 PHP 数组回显到 javascript 中,如下所示:

<?php 
    $myArray=array();
    foreach ($persons as $person) {
    array_push($myArray,$person['id']);
    }
?>

$(document).ready(function() {
    populatePersons(JSON.parse(<?php echo json_encode($myArray);?>));
});

所以基本上我在 中回显了一个 PHP 数组格式,然后在 中解析但我在控制台日志中收到此错误:

SyntaxError: JSON.parse: unexpected non-whitespace character after JSON data 

谁能告诉我我做错了什么?

最佳答案

Can anybody tell me what I am doing wrong?

json_encode 生成 JSON 时,您正在将其回显到 JavaScript 中。因此,它将被解释为 JavaScript 数组文字,而不是包含 JSON 的字符串。因此,您不能使用 JSON.parse

只是摆脱它:

populatePersons(<?php echo json_encode($myArray);?>);

如果您查看生成的代码,您会是这样的:

 populatePersons(JSON.parse([1,2,3]));

但是 JSON.parse 需要一个 string(包含 JSON)。因为 JavaScript 执行类型转换,它会先将数组转换为字符串,这很可能不会生成有效的 JSON。

再说一次:你已经有了一个数组,不需要解析任何东西。

关于javascript - 为什么我收到有关 "unexpected non-whitespace after JSON data"的错误消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30970330/

相关文章:

php - 使用带游标的 PHP API 获取所有 Twitter 关注者

php - 可以在 PHP 中使用 cURL 将数据添加到 HTTP 请求的主体吗?

php - 如何使用 prestashop 1.7 上的模块在前台创建自定义页面

arrays - 在 Bash 中循环遍历字符串数组?

javascript - 计算 for 循环中输入值的总和

javascript - 通过 dict 数据类型使选项卡特定变量

python - 为什么使用 np.mean() 和 Mean() 给我不同的输出数字?

c++ - dynamic_cast 到相同的类型不检查对象的类型

javascript - 为什么我无法在 Javascript Date 对象上使用 getDay() 方法和 getUTCDay() 方法获得相同的结果

javascript - Meteor 新手询问最佳实践