【问题标题】:Having trouble making JSON parse and eval to work in JavaScript无法使 JSON 解析和评估在 JavaScript 中工作
【发布时间】:2014-02-11 20:47:18
【问题描述】:

如上所述,我有一个 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 代码行,代码可以正常工作)

【问题讨论】:

  • 你试过console.log(x)吗?
  • x已经一个对象。无需解析它。 JSON 字符串是 JavaScript 语法的子集,因此它被作为对象读取。
  • 理解基本的 JS 字符串语法(甚至任何语言的基本字符串语法)会告诉你 "("x")" 不可能是有效的......
  • @RagenDazs console.log(x) 或只是 console.log 不显示任何内容,警报似乎显示基本消息,例如“hi”等。不知道为什么日志不起作用尽管。哦,我现在明白了,对不起,我通过 codeacadamy 学习了 javascript 等,没有意识到我必须使用 ctrl shift j
  • @oorosco 你是什么意思它不起作用?你检查过控制台吗? (以 Chrome 中的 Ctrl+Shift+J 为例)

标签: javascript php html json


【解决方案1】:

简单地做:

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

JSON 表示 JavaScript 对象表示法。如果将 JSON 直接插入到 Javascript 中,它将运行良好,就在这种情况下。无需解析。 eval 不建议用于 JSON 解析,但同样适用(注意 eval 确实有效,因为 JSON 是有效的 Javascript!)。

JSON.parse 仅在 Javascript 字符串中有 JSON 时才需要。所以这会起作用:

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

【讨论】:

  • 好吧,那么我如何在 javascript 端获取对象的元素? php端:$streetsObject[x]->streetArray[y]->x_
  • @oorosco 只需在我的示例代码后添加console.log(obj); 即可查看(在 Javascript 控制台中查看,将列出对象属性)。我不知道您的对象中有什么,但obj 将是绝对有效的 Javascript 对象,包含与您的 JSON 相同的数据。
  • 好的,谢谢你的澄清,我真的没有从网上的例子中得到这个谢谢我会在几秒钟内检查标记,只是想确保一切正常:D
猜你喜欢
  • 2021-03-20
  • 1970-01-01
  • 1970-01-01
  • 2017-06-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多