我正在使用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"}

希望这可以帮助。

09-30 13:08
查看更多