使用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中。

导致这个错误的原因是:

  1. 出现这个报错提示,根本原因是--json解析异常,所以请大家直接去关注自己json的返回数据注意检查其返回内容和内容的格式是否正确。

  2. 检查自己的php文件编写的是否正确,符合语法规范。

  3. 即使编写的代码编写的没有问题,还是会出现这个问题!

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。

  1. php语法书写的不规范,在php语言中,每一条语句结束之后,要加上一个   “ ; ”分号。切记,我吃过不少亏
  2. 后端获得数据在转给前端使用,数据必须是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 强制清除缓存。然后就好了。

感谢关注!

猜你喜欢

转载自blog.csdn.net/liliang250/article/details/109235911