【问题标题】:JSON - proper way to decode string in JavaScriptJSON - 在 JavaScript 中解码字符串的正确方法
【发布时间】:2012-09-28 14:12:50
【问题描述】:

我想知道在 Javascript 代码中解码 JSON 字符串的最佳方法是什么。

我希望将我的 json 字符串嵌入到我的 JS 中,如下所示:

var params = dojo.fromJson('<?=json_encode($this->params); ?>');

dojo.fromJson 对我的字符串进行解码,而 json_encode 是一个 php 函数,用于对服务器端的对象进行编码。

似乎 json 编码器忽略了 ' 字符并且只将 " 转换为 \"。因此,当我在 $this->params 中的一个变量包含一个 ' 字符时,就会出现 Javascript 错误。

例如:

var params = dojo.fromJson('{"id":"11","object_type":"Let's go"}');

解决这个问题的最佳方法是什么?

感谢您的帮助。

【问题讨论】:

  • 编码前,能不能把'全部换成\'
  • @ianpgall — 编码之后。这是试图将 JSON 文本 in 放入 JavaScript 字符串。
  • @Quentin 是的,废话,这就是我的意思。只是不断混淆事情发生的顺序:)
  • @ianpgall 这是个好主意。我正在寻找解决这个问题的最佳和最简单的方法。

标签: php javascript dojo json


【解决方案1】:

由于是自己生成的JSON,所以可以信任它,所以不需要把它当成JSON,而可以把它当成JS。

var params = <?=json_encode($this->params); ?>;

PHP 的 JSON 编码器将为您转义 &lt;/script&gt;,因此您无需担心使用数据终止脚本元素。

【讨论】:

  • 我前段时间做了一些测试,但没有。这可能取决于 json_encode 函数的版本。 php 5.3.8 中的版本总是以 javascript 无法理解的方式编码 utf8 字符。
  • works for me 在 PHP 5.3.3 上(带有安全补丁)
  • 由于 JSON 是 JavaScript 的一个子集(除了我认为围绕控制字符的一个或两个边缘情况),很难想象 PHP 如何输出 JavaScript 解析器无法解析的 JSON .
  • @Quentin:看来您对编码 utf8 和 php 是正确的。我想知道为什么我前段时间有这么糟糕的结果。您关于 ' 的解决方案解决了我的问题。感谢您的帮助。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-06-15
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多