JSON.parse是否隐式调用?

Joe*_*lum 1 javascript php json

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

<script>
   var resp = <?php  echo getjsonFromServer() . ';'?> 
   resp=JSON.parse(resp);
   displayStats(resp);
</script>
Run Code Online (Sandbox Code Playgroud)

这会产生错误'SyntaxError:Unexpected token o',当我检查控制台时,我看到响应已经被JSON解析.意思是我不应该尝试JSON.parse已经解析过的答案.

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

注意 - 我的PHP是这样的

header('"Content-Type":application/json');
$js = json_encode($js);
echo $js;
Run Code Online (Sandbox Code Playgroud)

SLa*_*aks 5

查看您生成的来源.

你正在回应原始的JSON,所以你的源代码就是这样

var resp = { "property": "value", ... };
Run Code Online (Sandbox Code Playgroud)

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

  • @Joel_Blum页面上的`<script>`标签中包含的文本被解释为JavaScript.因此,看起来像JSON的东西会被自动解析为JavaScript对象文字(这是因为JSON是JavaScript的对象文字语法的子集).来自`xmlhttp.responseText`的文本只是一个字符串,不是程序的一部分,所以你需要告诉JavaScript如何通过调用`JSON.stringify`来解释它. (2认同)