2016-08-22 73 views
0

我正在使用新的使用AJAX和PHP我試圖發送一個post請求到一個名爲insertvalue.php的文件。我已經創建了表和數據庫。我試圖通過ajax從jquery滑塊獲取值,然後將該值插入到mysql表中。之後,我想從mysql表中返回結果。SyntaxError:JSON.parse:嘗試插入到mysql時JSON數據的第1列第1列的意外字符

當我嘗試運行腳本時,出現錯誤「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; 
} 

JS使用Ajax文件發送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(); 
+3

'dataType'是您期待回來的數據類型。所以你告訴jQuery將響應解析爲JSON。但insertvalue.php不返​​回JSON,它返回html。 –

+0

好的。我應該將數據類型編輯爲html嗎? – LadyT

回答

1

從你的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"}

希望這會有所幫助。

+0

謝謝。這非常有幫助 – LadyT

相關問題