2017-07-30 106 views
0

PHPJSON.parse()引发意外的令牌错误。不知道为什么?

<?php 

header("Content-type: application/json") ; 
echo json_encode(array("reply" => "SOME_TEXT")) ; 

?> 

它回声本 - >

{"reply":"SOME_TEXT"} 

的Javascript

<script> 
$.get("script.php" , function(data) { 
    var reply = JSON.parse(data) ; 
}) ; 
</script> 

JS抛出unexpected token in JSON。但它会工作正常,如果我用标题(“Content-type:text/javascript”)“text/plain”替换PHP代码中的标题。

+1

您是否验证过JSON有效负载? https://jsonlint.com/ –

+1

如果JS引发错误JSON无效 - 没有理由不信任它。 – zerkms

+0

使用console.log(“data”+ data);看你的脚本是否得到正确的JSON代码。 – onno204

回答

6

如果头部设置为application/json,jQuery会自动解析数据,因此您正在尝试解析对象。您可以使用标头设置为application/json使用它没有JSON.parse

$.get("script.php" , function(data) { 
    console.log(data.reply); 
}) ; 

由于@charlietft评论,

使用,而不是$获得()$ .getJSON()也将确保它被解析

+2

使用'。.getJSON()'而不是'$ .get()'也会保证它被解析,并且如果不是,则会返回错误回调 – charlietfl

+0

谢谢! @charlietfl – baao