PHP send json JS
der henry
- javascript
- php
0
Rolf B
0
Felix Riesterer
0
Ryuno-Ki
Hallo,
aus meiner html "Datenbanktabelle" sende ich verschiedene Befehle per fetch an PHP um die Datenbank zu ändern.
JS Fetch => PHP und wieder Bestätigung zurück PHP Rückmeldung => JS
Das JS Fetch an PHP funktioniert. Bei der Rückmeldung (PHP=>JS) bekomme ich nachfolgende Meldung im Firefox debugger.
SyntaxError: JSON.parse: unexpected end of data at line 1 column 1 of the JSON data
function sendData(data)
{
fetch("datapointsEdit.php",
{
method: 'POST',
header: 'Content-Type: application/json; charset=UTF-8',
body: JSON.stringify(data),
})
.then(response => response.json())
.then(data => {
let x = data['Answer'];
alert ("Answer: " + x); })
.catch(function(err) { console.log("Error: ", err); });
}
Die Rückmeldung erzeuge ich mit PHP so.
$answer = array ('Answer' => 'saveDatapoint : OK');
echo json_encode($answer, JSON_PRETTY_PRINT);
Ich sehe den Fehler nicht ....
Vielen Dank !!!!
Hallo Henry,
ich auch nicht. Weil ich nicht an deinem PC sitze, um in den Entwicklerwerkzeugen ins Netzwerk-Tab zu schauen und die Antwort genauer zu betrachten.
These 1: Der MIME-Typ der Antwort wurde nicht auf application/json gesetzt
These 2: PHP haut dir einen Notify dazwischen
Rolf
Lieber henry,
meine Glaskugel sagt mir, dass Dein PHP einen Fehler bemängelt, der im JSON-Code zu lesen ist. Eventuell findest Du ja noch hilfreiche Hinweise im PHP-Fehlerlog.
Beweise mir das Gegenteil, indem Du hier postest, was tatsächlich als JSON-Daten in der HTTP-Response steht.
Liebe Grüße
Felix Riesterer
Moin der,
function sendData(data) { fetch("datapointsEdit.php", { method: 'POST', header: 'Content-Type: application/json; charset=UTF-8', body: JSON.stringify(data), }) .then(response => response.json()) .then(data => { let x = data['Answer']; alert ("Answer: " + x); }) .catch(function(err) { console.log("Error: ", err); }); }
Die Art und Weise, wie du den Header setzt, ist eher unüblich.
Ich würde ein Objekt als Wert statt eines Strings erwarten. Der Netzwerk-Tab in den Entwickler-Werkzeugen weiß aber Genaueres.
Du kannst auch einmal response.text() nutzen, um es zu auszugeben (damit ist data dann aber kein Objekt mehr).
Gruß,