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)