未捕获的SyntaxError:意外的输入结束
我有一个php嵌套数组存储在变量$myArray
,下面是数组在var转储到浏览器后的样子(它不是一个完整的输出)。
<?php var_dump($myArray); ?>
输出:
array (size=4)
'id' => string '162' (length=3)
'content' => string 'Test content' (length=12)
'children' =>
array (size=16)
0 =>
array (size=4)
'id' => string '29208' (length=5)
'content' => string 'Test content 1' (length=14)
'children' =>
array (size=3)
...
1 =>
array (size=4)
'id' => string '29215' (length=5)
'content' => string 'Test content 2' (length=14)
'children' =>
array (size=1)
...
2 =>
array (size=3)
'id' => string '29220' (length=5)
'content' => string 'Test Content 3' (length=14)
从JavaScript读取变量数组如下:
<script type="text/javascript">
var myVar = JSON.parse('<?php json_encode($myArray) ?>');
</script>
在控制台中返回以下错误
Uncaught SyntaxError: Unexpected end of input
在调试代码时,我做了以下操作:
创建一个新变量并在其中存储一些JSON数据,然后JSON将其解析为另一个变量,然后最终安慰输出并且它工作正常。
<script type="text/javascript">
var x = '{"id":123,"content":"This is a test content"}';
var myVar = JSON.parse(x);
console.log(myVar);
</script>
输出是一个在控制台中具有这些值的对象:
Object
content: "This is a test content"
id: 123
我究竟做错了什么?
var myVar = <?php echo json_encode($myArray) ?>;
应该这样做。 没有'
字符是必需的,因为JSON对象可以按照书面读取,并且不需要解析,因为它直接输出到页面而不是给它一个字符串
你需要回显json对象。
<?php json_encode($myArray) ?>
至
<?php echo json_encode($myArray) ?>
这是你在这里解释的一个简短的速记技巧
你可以简单地做<?=$var?>
。 它基本上是echo
的缩写,只有在简写标签<?
已启用。
所以你的问题的答案(如果速记打开标签被启用),你可以使用这个
var myVar = <?=json_encode($myArray)?>;
这相当于@Dar在上面给你的东西,但不那么难看。