无法在javascript中访问PHP数组,初始化为数组的javascript对象在chrome开发工具中最终为空


Unable to access PHP array in javascript, javascript object initialized to array ends up empty in chrome developer tools

我正试图从PHP数组中获取一个JSON,这样我就可以将JSON覆盖到谷歌图表地理图上。所以我试图通过在test.php文件中使用这个简单的代码来实现这一点

<?php 
  include("conn.php");
?>
<!DOCTYPE html>
<html>
<head>
  <title>test</title>
</head>
<body>
<script type="text/javascript">
  document.onload = function (){
    var jsonObj = <?php echo json_encode($rowarr, JSON_FORCE_OBJECT); ?>;
    var jsonString = JSON.stringify(jsonObj, null, ''n');
    console.log(jsonString);
  };
</script>
</body>
</html>

conn.php文件返回一个类似的数组

{"Auckland":37616,"Wellington":35357,"Christchurch":29818}

但在chrome开发工具中,我看到这段代码显示为

document.onload = function (){
var jsonObj = ;
    // Chrome error here -> Uncaught SyntaxError: Unexpected token ;
var jsonString = JSON.stringify(jsonObj, null, ''n');

jsonObj变量为空,而其中应该有内容。

在CDT控制台上,我得到

未捕获的语法错误:意外的标记;

在这个test.php文件的第11行

Chrome有时无法正确显示可处理数组和XML,但它们确实存在。我的建议是:在其他浏览器上得到实际结果之前,不要在chrome上测试你的代码。

我昨天遇到过这种情况。

<script type="text/javascript">
  document.onload = function (){
    var jsonObj = <?php echo json_encode($rowarr); ?>;
    var jsonString = JSON.parse(jsonObj);
    console.log(jsonString);
  };
</script>

在我看来,$rowarr并不包含您认为它包含的内容。也许试着先把它记录下来。。。。

console.log("$rowarr");

您的思路是正确的。

首先,您可以去掉随附的文档.onload,因为它毫无意义。

其次,这是修改后的代码:

var jsonStringified = <?php echo json_encode($rowarr); ?>,
    jsonObject = JSON.parse(jsonStringified);
console.log(jsonObject);