Ich versuche, ein JSON zu PHP POST, wo es entschlüsselt und in MySQL-Datenbank geschoben werden soll.AJAX POSTing zu PHP funktioniert nicht
Dies ist mein JavaScript-Code.
var dictstring = "{sensorid: \""+ name +"\", x: " +pos.x +" ,y: "+pos.y+"}";
console.log(dictstring);
$.ajax({
type: "POST",
contentType: 'application/json; charset=utf-8',
dataType: "json",
url: "myfile.php",
data: JSON.stringify(dictstring),
success: function(data){
alert('Success');
},
error: function(e){
console.log(e.message);
}
});
Und das ist mein PHP-Code
<?php
$jsonData = file_get_contents('php://input');
$data_back = json_decode($jsonData);
$unit = $data_back->{"sensorid"};
$x_axis = $data_back->{"x"};
$y_axis = $data_back->{"y"};
// Create connection
$con=mysqli_connect("xxxxxxx:xxxx","xxxxx","xxxx","xxxxxxxx");
// Check
if (mysqli_connect_errno()) {
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}
//Insert Values
$sql_hm = "INSERT INTO xxxx(unit, x_axis, y_axis)
VALUES ('$unit', $x_axis, $y_axis)";
if ($con->query($sql_hm) === TRUE) {
echo "values inserted successfully";
} else {
echo "No data ";
}
?>
Ich weiß, dass der PHP-Teil funktioniert - ich versuchte POSTen JSON-Daten mit content: application/json von einer REST Client-Anwendung und es funktioniert. Aber wenn ich es mit meinem Javascript-Code versuche, ist es nicht POSTing. Ich kann den "dictstring" Zeichenfolgenwert in der Konsole sehen. Ich kann die Warnung "Erfolg" auch nicht sehen. Interessanterweise wird der "Erfolg" -Alarm angezeigt, wenn ich den dataType: "json" -Zeile entferne. POSTing läuft jedoch immer noch nicht, da ich die Werte in der Datenbank nicht sehen kann.
Was fehlt mir hier?
Warum ist "dictstring" eine Zeichenkette? Und warum gibst du es an 'JSON.stringify()'? – Andreas
Ich denke, Sie müssen nicht 'stringify', da' dictstring' bereits eine JSON-Zeichenfolge ist. –
Schreiben Sie kein eigenes JSON, und stellen Sie die Frage nicht mehrmals hintereinander. – miken32