在我的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"}
我认为是正确的。
有什么建议吗?
答案 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);