Mit xhr Daten senden und mit PHP empfangen?
Hi,
ich versuche Daten per AJAX zu versenden.
Leider gelingt es mir nicht, die Daten mit PHP anzunehmen.
// Sammle alle Klassen
const words = document.querySelectorAll('.ocrx_word');
// Stelle ein leeres Array bereit
const datasBooks = [];
// Suche alle Wörter und packe sie in ein Array
words.forEach((wordItems) =>
{
let word = wordItems.innerText;
datasBooks.push(word);
});
// Go-AJAX
const xhr = new XMLHttpRequest();
// Zielroute
xhr.open("POST", "actions/test.route.php", true);
// Antwort
xhr.onreadystatechange = function ()
{
if (xhr.readyState==4 && xhr.status==200)
{
console.log('xhr > Senden > ok');
}
};
//Header
xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset=UTF-8');
// Ciao
xhr.send(datasBooks);
console.log(datasBooks);
In der Zielroute versuche ich:
$wordsInBook = json_decode($_POST['datasBooks']);
Ich bekomme die Fehlermeldung:
<b>Warning</b>: Undefined array key "datasBooks"
Nur, warum wird der Key nicht gefunden?
1 Antwort
Vom Beitragsersteller als hilfreich ausgezeichnet
naja du musst auch schon ein feld schicken und nicht ein rohes array
xhr.send({dataBooks:dataBooks});
dann wird das vielleicht eher was .
deswe3gen steht da auch als fehlermeldung das es kein KEY gibt .
TechPech1984
09.09.2022, 16:28
@HoiZusammen
dann guck dir doch mal deine variable erstmal an .
debuggen ist das a und oh
var_dump($_POST);
TechPech1984
09.09.2022, 16:32
@HoiZusammen
bzw willst du ja json im feld dataBooks
xhr.send("dataBooks="+JSON.stringify(dataBooks));
ggf noch den contenr type ändern
xhr.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
@TechPech1984
Habe ich schon...
wenn ich :
xhr.send(datasBooks);
schreibe bekomme ich mit var_dump($_POST) das Array angezeigt. - Der Array-Name ist aber weg.
schreibe ich :
xhr.send({datasBooks:datasBooks});
bekomme ich ein leeres Array.
TechPech1984
09.09.2022, 16:34
@HoiZusammen
habs nochmal ergäzt . du hast erstens kein feld gemacht, zweitens kein JSON erzeugt.
bzw willst du ja json im feld dataBooks
xhr.send("dataBooks="+JSON.stringify(dataBooks));
ggf noch den content type ändern
xhr.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
Danke für deine Antwort.
Das war es nicht.
Ich bekomme die gleiche Fehlermeldung.