我正在使用AJAX和PHP的新程序,我正在尝试将后发请求发送到名为insertvalue.php的文件。我已经创建了表和数据库。我试图通过ajax从jquery滑块中获取值,然后将该值插入mysql表。之后,我想从mysql表返回结果。
当我尝试运行脚本时,出现错误“ SyntaxError:JSON.parse:JSON数据的第1行第1列意外字符”。我检查了一下,但不确定自己做错了什么。任何援助将不胜感激。谢谢!
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文件将js发送到php
$.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);
}
});
insertvalue.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();
最佳答案
从JavaScript代码中,您期望服务器提供JSON编码的数据。
因此,必须确保每个客户端请求的服务器仅响应一个JSON编码的结果。解析器将无法理解JSON编码的数据与文本(如{ "one": "one" }slider_value
的混合)或JSON编码的数据与其他JSON编码的数据(如{ "one": "one" }{ "two": "two" }
的混合)。
为此,您需要将所有echo 'some result'
语句转换为$result = 'some result'
。在脚本的最后,您将编码并回显最终结果,例如:{ "result": "Success", "message": "Data inserted successfully"}
。
希望这可以帮助。