JSON.parse()抛出意外的令牌错误.不知道为什么?

Sag*_*ngh 0 javascript php json

PHP

<?php

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

?>
Run Code Online (Sandbox Code Playgroud)

它回应了这个 - >

{"reply":"SOME_TEXT"}
Run Code Online (Sandbox Code Playgroud)

使用Javascript

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

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

chr*_*con 6

如果标头设置为jQuery,jQuery会自动解析数据application/json,因此您尝试解析一个对象.您可以使用它而不JSON.parse将标头设置为application/json:

$.get("script.php" , function(data) {
    console.log(data.reply);
}) ;
Run Code Online (Sandbox Code Playgroud)

正如@charlietft评论的那样,

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

  • 使用`$ .getJSON()`代替`$ .get()`也可以保证它被解析,如果没有,它将转向错误回调 (2认同)