SyntaxError:JSON.parse:尝试插入 mysql 时 JSON 数据的第 1 行第 1 列出现意外字符

Posted

技术标签:

【中文标题】SyntaxError:JSON.parse:尝试插入 mysql 时 JSON 数据的第 1 行第 1 列出现意外字符【英文标题】:SyntaxError: JSON.parse: unexpected character at line 1 column 1 of the JSON data when trying to inser to mysql 【发布时间】:2016-12-29 08:40:56 【问题描述】:

我正在使用新的 AJAX 和 php 我正在尝试将发布请求发送到名为 insertvalue.php 的文件。我已经创建了表和数据库。我正在尝试通过 ajax 从 jquery 滑块中获取值,然后将该值插入 mysql 表中。之后,我想从 mysql 表中返回结果。

当我尝试运行脚本时,我收到错误“SyntaxError: JSON.parse: unexpected character at line 1 column 1 of the JSON data”。我检查了,我不确定我做错了什么。任何援助将不胜感激。谢谢!

db_connect.php

$connect = mysqli_connect("localhost", "private", "private", "private");
// fake credentials for posting

if (mysqli_connect_errno())

   echo "Failed to connect to MySQL: " . mysqli_connect_error();


$createTable = "
    CREATE TABLE IF NOT EXISTS ClassValues (
        question VARCHAR(40) NOT NULL,
        slider_value INT(50) NOT NULL
    )
";

 if ($connect->query($createTable) === TRUE) 
   //  echo "Table ClassValues created successfully";
  else 
   echo "Error creating table: " . $connect->error;
 

用ajax发送js到php的js文件

 $.ajax(
     url: 'php/insertvalue.php',
     data:  'one': value , // slider value 
     type: 'post',
     dataType: 'json',
     success: function(x) 
         alert(x.one);
     ,
     error: function(request, status, error) 
         alert(error);
     
 );

插入值.php

include 'db_connect.php';  // database connection

$one = $_POST['one'];
$array = array('one'=>$one);

echo json_encode($array);

$query = "INSERT INTO ClassValues (question, slider_value) VALUES('Question 1', $one)";
mysql_query($query);

$selection = "SELECT slider_value FROM ClassValues";
$result = $conn->query($selection);

if ($result->num_rows > 0) 
    while ($row = $result->fetch_assoc()) 
        echo "slider_value" . $row["slider_value"] . "<br/>";
    
 else 
    echo "0 results";

$conn->close();

【问题讨论】:

dataType 是您期望返回的数据类型。所以你告诉 jQuery 将响应解析为 JSON。但是 insertvalue.php 没有返回 JSON,它返回的是 html 好的。我应该将数据类型编辑为 html 吗? 【参考方案1】:

在您的 javascript 代码中,您期望来自服务器的 JSON 编码数据。

因此,您必须确保您的服务器将对每个客户端请求仅响应一个 JSON 编码结果。解析器无法理解 JSON 编码数据与 "one": "one" slider_value 等文本的混合,或 JSON 编码数据与 "one": "one" "two": "two" 等其他 JSON 编码数据的混合。

为此,您需要将所有echo 'some result' 语句转换为$result = 'some result'。在脚本结束时,您将对最终结果进行编码和回显,例如: "result": "Success", "message": "Data inserted successfully"

希望这会有所帮助。

【讨论】:

谢谢。这很有帮助

以上是关于SyntaxError:JSON.parse:尝试插入 mysql 时 JSON 数据的第 1 行第 1 列出现意外字符的主要内容,如果未能解决你的问题,请参考以下文章

SyntaxError:JSON.parse (<anonymous>) 处的 JSON 输入意外结束

解析器错误:SyntaxError:JSON.parse:JSON 数据的第 2 行第 1 列出现意外字符 200 OK

SyntaxError:JSON.parse:React 应用程序上 JSON 数据的第 1 行第 1 列的意外字符

json.parse 给出 Uncaught SyntaxError: Unexpected Token (Django json serialized queryset)

SyntaxError:JSON.parse 处的 JSON 输入意外结束 [重复]

在 JSON.parse 的位置 0 处获取“SyntaxError:”JSON 中的意外标记”