我认为这可能被归类为基本但我很好奇。为什么必须解析从 ajax 调用返回的 json 编码数据,但如果它在主加载文档中由 php 回显,则不需要解析?
编辑:基本上问题是,如果我在这两种情况下都有一个data
带有属性的对象id
,为什么我可以输入
data.id
并在加载主文档时回显 json 对象时返回值,但是从 ajax 调用返回且未解析时是否会引发错误?
通过回显,我假设你的意思是你做了这样的事情:
<script>
var data = <? echo json_encode($data) ?>;
alert(data.id);
</script>
如果是这种情况,浏览器就知道回显的 json 是代码,因为它包含在脚本标签中。JSON 是 JavaScript 的子集,因此您在这里真正要做的是生成浏览器随后解释的 JavaScript 代码。
另一方面,阿贾克斯则不同。当您使用 ajax 加载某些内容时,它可能是文本、xml、csv、html、svg 或数十种不同格式中的任何一种。JSON 与我列出的所有其他数据格式一样,只是一种数据格式,因此您必须告诉 javascript 引擎它是什么。这就是为什么你必须解析它。它需要知道文本的格式,以便正确解释它。
您不必这样做,而且 JSON 编码的字符串仍然需要从 Javascript 中“解码”。这只是一种能够访问返回字符串中的数组元素/属性以进行 ajax 调用的更快方法。