0

我认为这可能被归类为基本但我很好奇。为什么必须解析从 ajax 调用返回的 json 编码数据,但如果它在主加载文档中由 php 回显,则不需要解析?

编辑:基本上问题是,如果我在这两种情况下都有一个data带有属性的对象id,为什么我可以输入

data.id

并在加载主文档时回显 json 对象时返回值,但是从 ajax 调用返回且未解析时是否会引发错误?

4

2 回答 2

1

通过回显,我假设你的意思是你做了这样的事情:

<script>
  var data = <? echo json_encode($data) ?>;

  alert(data.id);
</script>

如果是这种情况,浏览器就知道回显的 json 是代码,因为它包含在脚本标签中。JSON 是 JavaScript 的子集,因此您在这里真正要做的是生成浏览器随后解释的 JavaScript 代码。

另一方面,阿贾克斯则不同。当您使用 ajax 加载某些内容时,它可能是文本、xml、csv、html、svg 或数十种不同格式中的任何一种。JSON 与我列出的所有其他数据格式一样,只是一种数据格式,因此您必须告诉 javascript 引擎它是什么。这就是为什么你必须解析它。它需要知道文本的格式,以便正确解释它。

于 2013-06-28T17:05:23.170 回答
0

您不必这样做而且 JSON 编码的字符串仍然需要从 Javascript 中“解码”。这只是一种能够访问返回字符串中的数组元素/属性以进行 ajax 调用的更快方法。

于 2013-06-28T16:02:07.190 回答