无法使JSON解析和eval在JavaScript中工作

时间:2014-02-11 20:47:18

标签: javascript php html json

如上所述,我有一个PHP脚本和一个JavaScript,我有一些对象可以读取服务器端的文本文件,然后将数据传递给JavaScript。

这是我的整个代码:

map.html:http://www.pastebin.com/b45mbvgp和index.php:http://www.pastebin.com/zibdquzu

真正重要的部分:

var x = <?php echo json_encode($streetsObject); ?>;
var obj = eval("("x")");

我也试过

var obj = JSON.parse(x);

X变量确实设置为传递对象的大小,527(测试它)但是当我尝试使用eval或JSON解析函数时根本不起作用。我的html代码中是否存在某种错误,这些错误会影响我对其他库的调用?如果是这样,那将是奇怪的,因为kinetic.js工作正常。我一直在谷歌搜索JSON的例子,我还没有看到解析传递对象的例子,它是本地对象的所有例子:(

(如果删除eval / json代码行,代码可以正常工作)

1 个答案:

答案 0 :(得分:4)

简单地说:

var obj = <?php echo json_encode($streetsObject); ?>;

JSON表示JavaScript Object Notation。如果您直接将JSON插入Javascript,它将运行正常,就在这种情况下。无需解析。不建议将eval用于JSON解析,但同样适用于此(注意eval实际上有效,因为JSON是有效的Javascript!)。

只有在Javascript字符串中有JSON时才需要

JSON.parse。所以这会奏效:

var str = '<?php echo json_encode($streetsObject); ?>';
var obj = JSON.parse(str);