【问题标题】:SyntaxError: JSON.parse: unexpected character at line 1 column 1 of the JSON data when trying to inser to mysqlSyntaxError:JSON.parse:尝试插入 mysql 时 JSON 数据的第 1 行第 1 列出现意外字符
【发布时间】: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 吗?

标签: javascript php jquery mysql ajax


【解决方案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"}

希望这会有所帮助。

【讨论】:

  • 谢谢。这很有帮助
猜你喜欢
  • 2020-06-26
  • 2020-09-03
  • 2014-11-02
  • 1970-01-01
  • 2023-02-08
  • 2022-01-12
  • 2019-01-19
  • 1970-01-01
  • 2023-03-11
相关资源
最近更新 更多