【问题标题】:JSON.parse() throws unexpected token error. Don't know why? [duplicate]JSON.parse() 抛出意外的令牌错误。不知道为什么? [复制]
【发布时间】:2018-01-06 07:56:09
【问题描述】:

PHP

<?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。但如果我用 header("Content-type: text/javascript")"text/plain" 替换 PHP 代码中的标头,它会正常工作。

【问题讨论】:

  • 您是否验证了 JSON 有效负载有效? jsonlint.com
  • 如果 JS 抛出错误 JSON 无效 - 没有理由不信任它。
  • 使用console.log("data" + data);查看您的脚本是否获得了正确的 JSON 代码。

标签: javascript php json


【解决方案1】:

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

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

正如@charlietft 评论的那样,

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

【讨论】:

  • 使用 $.getJSON() 而不是 $.get() 也将确保它被解析,如果没有,将进入错误回调
  • 谢谢! @charlietfl
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-12-07
  • 1970-01-01
  • 1970-01-01
  • 2014-12-26
  • 1970-01-01
  • 2018-02-11
  • 2011-07-05
相关资源
最近更新 更多