使用Javascript从PHP获取JSON数据:

时间:2019-07-17 00:59:52

标签: javascript php json

在我的JavaScript中,出现此错误:

  

未捕获到的SyntaxError:JSON中位置0处的意外令牌P   JSON.parse(),位于XMLHttpRequest.req.onreadystatechange

当试图从PHP脚本中接收一些东西时。 我已经看到了一些类似的问题,但是找不到适合我的案例的解决方案。

  

我的服务器PHP代码:

<?php
header('Content-Type: application/json');
$myObj->name = "John";
$myObj->age = 30;
$myObj->city = "New York";
$myJSON = json_encode($myObj,JSON_UNESCAPED_UNICODE);
echo $myJSON;
?>
  

我的客户端javascript:

var req = new XMLHttpRequest();
req.onreadystatechange = function () {
    if (this.readyState == XMLHttpRequest.DONE && this.status == 200) {
        var s = req.responseText;
        var users = JSON.parse(s);
        console.table(s);
    } 
}
req.open("GET", "./get_info.php", true);

当我使用浏览器运行PHP文件时,会显示以下信息:

{"name":"John","age":30,"city":"New York"}

我认为是正确的。

有什么建议吗?

1 个答案:

答案 0 :(得分:2)

您的代码工作正常,您可以检查php响应中是否收到任何警告,这些警告会导致客户端JSON.parse中出现错误,与此同时,我在我的系统。 从php获取响应-

<br />
<b>Warning</b>:  Creating default object from empty value in <b>/opt/lampp/htdocs/tst/get_info.php</b> on line <b>5</b><br />
{"name":"John","age":30,"city":"New York"}

在客户端:

Uncaught SyntaxError: Unexpected token < in JSON at position 0
    at JSON.parse (<anonymous>)
    at XMLHttpRequest.req.onreadystatechange 

通过在我的PHP代码中禁用警告来解决此问题-

error_reporting(E_ERROR | E_PARSE);