2016-08-22 1 views
0

Ich benutze neue AJAX und PHP Ich versuche, eine Post-Anfrage an eine Datei namens insertvalue.php zu senden . Ich habe bereits die Tabelle und die Datenbank erstellt. Ich versuche, den Wert von einem jquery Schieberegler durch Ajax zu greifen und dann diesen Wert in die mysql Tabelle einzufügen. Danach möchte ich die Ergebnisse aus der Tabelle mysql zurückgeben.SyntaxError: JSON.parse: Unerwartetes Zeichen in Zeile 1 Spalte 1 der JSON-Daten beim Versuch, mysql

Wenn ich versuche, das Skript auszuführen, erhalte ich den Fehler "SyntaxError: JSON.parse: unerwartetes Zeichen in Zeile 1 Spalte 1 der JSON-Daten". Ich habe nachgesehen und bin mir nicht sicher, was ich falsch gemacht habe. Jede Hilfe wäre willkommen. Vielen Dank!

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 mit Ajax-Datei js senden

$.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' ist die Art der Daten, die Sie erwarten. Sie sagen also, dass jQuery die Antwort als JSON analysieren soll. Aber insertvalue.php gibt JSON nicht zurück, es gibt HTML zurück. –

+0

Ok. Soll ich den Datentyp in HTML bearbeiten? – LadyT

Antwort

1

Von Ihrem JavaScript-Code PHP, Sie erwarten JSON codierte Daten vom Server.

Daher müssen Sie sicherstellen, dass Ihr Server mit nur ein JSON codiertes Ergebnis pro Clientanforderung antwortet. Der Parser versteht keine Mischung aus JSON-codierten Daten mit Text wie { "one": "one" }slider_value oder einer Mischung von JSON-codierten Daten mit anderen JSON-codierten Daten wie { "one": "one" }{ "two": "two" }. Um dies zu erreichen, müssen Sie alle Ihre echo 'some result' Anweisungen in $result = 'some result' konvertieren. Am Ende des Skripts werden Sie dann das Endergebnis kodieren und widerspiegeln, z. B .: { "result": "Success", "message": "Data inserted successfully"}.

Hoffe, das hilft.

+0

Danke. Das ist sehr hilfreich – LadyT

Verwandte Themen