1

我有 JSON 从我的服务器进入我的 javascript,就像这样 -

<script>
   var resp = <?php  echo getjsonFromServer() . ';'?> 
   resp=JSON.parse(resp);
   displayStats(resp);
</script>

这会产生一个错误“SyntaxError: Unexpected token o”,当我检查控制台时,我看到响应已经被 JSON 解析。这意味着我不应该尝试 JSON.parse 一个已经解析的 answer 。

我的问题是——怎么会?谁为我解析了我的 JSON?每当我从服务器获取 JSON 时,我习惯于调用 JSON.parse,例如 ajax 调用。为什么这里不一样?

注意 - 我的 PHP 是这样的

header('"Content-Type":application/json');
$js = json_encode($js);
echo $js;
4

3 回答 3

5

查看您生成的源代码。

您正在回显原始 JSON,因此您的来源看起来像

var resp = { "property": "value", ... };

这是一个对象文字,而不是一个字符串

于 2012-12-17T21:37:02.427 回答
2

它不是 JSON。您正在呈现普通的旧 JavaScript。

<script>
   var resp = (<?php  echo getjsonFromServer() ?>); 
   displayStats(resp);
</script>

这应该这样做。

如果您想知道:添加括号会使浏览器将您的代码解析为对象文字而不是代码块。

于 2012-12-17T21:37:54.467 回答
0

浏览器不知道使用 php 函数来创建对象。对于浏览器来说,它只是 javascript,就好像它最初是源代码的一部分一样。

于 2012-12-17T21:45:58.347 回答