我有JSON从我的服务器进入我的javascript,如此 -
<script>
var resp = <?php echo getjsonFromServer() . ';'?>
resp=JSON.parse(resp);
displayStats(resp);
</script>
这会产生错误'SyntaxError:Unexpected token o',当我检查控制台时,我发现响应已经被JSON解析了。意思是我不应该尝试JSON.parse已经解析过的答案。
我的问题是 - 怎么样?谁为我解析了我的JSON?每当我从服务器获得JSON时,我习惯调用JSON.parse,例如ajax调用。为什么在这里不一样?
注意 - 我的PHP是这样的
header('"Content-Type":application/json');
$js = json_encode($js);
echo $js;
答案 0 :(得分:5)
查看您生成的来源。
您正在回显原始JSON,因此您的来源看起来像
var resp = { "property": "value", ... };
这是一个对象文字,而不是字符串
答案 1 :(得分:2)
这不是JSON。您正在渲染普通的旧JavaScript。
<script>
var resp = (<?php echo getjsonFromServer() ?>);
displayStats(resp);
</script>
这应该这样做。
如果您想知道:添加括号使浏览器将您的代码解析为对象文字而不是代码块。
答案 2 :(得分:0)
浏览器不知道使用php函数来创建对象。对于浏览器来说,它只是javascript,好像它首先是源代码的一部分。