使用Ajax请求后台数据,然后的时候出现Uncaught (in promise) SyntaxError: Unexpected token < in JSON at position 0的错误。
首先来看下Uncaught (in promise) SyntaxError: Unexpected token < in JSON at position 0 的意思是:未捕获(在promise)语法错误:在JSON中。
导致这个错误的原因是:
-
出现这个报错提示,根本原因是--json解析异常,所以请大家直接去关注自己json的返回数据注意检查其返回内容和内容的格式是否正确。
-
检查自己的php文件编写的是否正确,符合语法规范。
-
即使编写的代码编写的没有问题,还是会出现这个问题!
JS的ajax的请求方式:
ajax_post(url_show, data_show).then(function (reset) {
console.log(reset) // 显示数据
let resh = JSON.parse(reset)
console.log(resh) //显示数据
create_item(resh)
PHP的代码模块:
下面的代码都是正确的。
<?php
//获取前端发来的数据
$username = $_POST["username"];
header("content-type:text/html;charset=utf-8");
// 设置头 字符集
header("Content-type: application/json");
// //跨域
header('Access-Control-Allow-Origin: *');
header('Access-Control-Allow-Credentials: true');
header("Access-Control-Allow-Headers: Origin); X-Requested-With, Content-Type, Accept");
header("Access-Control-Request-Methods:GET, POST, PUT, DELETE, OPTIONS");
$db = new mysqli("localhost","root","root","XXX");
$sql = "SELECT * FROM XXX WHERE username='{$username}'";
$result = $db->query($sql);
$arr = [];
while( $row = $result->fetch_array( MYSQLI_ASSOC)){
array_push($arr,$row);
}
echo json_encode($arr);
?>
错误显示:
下面是我修改之前的代码形式:
$db = new mysqli("localhost","root","root","mogujie");
$sql = "SELECT * FROM mycar WHERE username='{$username}'";
$result = $db->query($sql)
$arr = [];
while( $row = $result->fetch_array( MYSQLI_ASSOC)){
array_push($arr,$row);
}
echo json_encode($arr);
在php代码中,会以下几种形式,会出现Uncaught (in promise) SyntaxError: Unexpected token < in JSON at position 0。
- php语法书写的不规范,在php语言中,每一条语句结束之后,要加上一个 “ ; ”分号。切记,我吃过不少亏
- 后端获得数据在转给前端使用,数据必须是JSON格式,这是注定的,所以在php编写的代码,然后给前端使用的时候,使用 json_encode()转成json数组。 然后前端再转成json对象数组。
在js代码中,会以下几种形式,会出现Uncaught (in promise) SyntaxError: Unexpected token < in JSON at position 0。
就是json
最后一个问题:就是即使php和js文件写的没有任何的问题,但是呢依然 会出现Uncaught (in promise) SyntaxError: Unexpected token < in JSON at position 0的报错。
这是浏览器的缓存的原因,因为你在js/php代码中 保存了,而浏览器还没有反应过来,使用的是之前的提交过来的代码显示。这时候这么看我保存过后的代码,是否显示了呢。
按F12 (如果有的用户按F12没有用 那是因为你的 你解锁了功能,按Fn+Esc组合键 上锁)或者单击右键 检查,找到Sourcse下面的js或者php文件 ,如果有 继续检查 程序代码,如果没有 Ctrl+F5 强制清除缓存。然后就好了。
感谢关注!
本文地址:https://blog.csdn.net/liliang250/article/details/109235911