6 Stimmen

XMLHttprequest sendet einen leeren Beitrag

Ich verwende den folgenden Code, um eine Anfrage zu senden:

var ajaxHandler = new XMLHttpRequest();

ajaxHandler.onreadystatechange = function()
{
   if(ajaxHandler.readyState == 4)
   {
      console.log(ajaxHandler.responseText);
   }
}

ajaxHandler.open("POST", "filterCards", true);
ajaxHandler.send("category="+category+"&tag="+tag);

Auf der PHP-Seite habe ich dies:

var_dump($_POST);

Obwohl die Variablen category und tag Werte haben, wird in der Konsole ein leeres Array angezeigt. Was mache ich mit dem Beitrag falsch?

6voto

web-nomad Punkte 5925

Hinzufügen setRequestHeader vor Ihrem Sendeaufruf:

ajaxHandler.setRequestHeader("Content-type","application/x-www-form-urlencoded");
ajaxHandler.send("category="+category+"&tag="+tag);

Ersetzen:

   if(ajaxHandler.readyState == 4)
   {
      console.log(ajaxHandler.responseText);
   }

mit

   if(ajaxHandler.readyState == 4 && ajaxHandler.status==200)
   {
      console.log(ajaxHandler.responseText);
   }

Ich hoffe, das hilft.

1voto

Fom Punkte 443

Die Antwort von web-nomad ist korrekt, aber wenn Sie immer noch ein leeres Array erhalten, überprüfen Sie, ob Sie die Dateierweiterungen in Ihrer Serverkonfiguration ausblenden. Wenn ja, dann wird eine Anfrage an "file.extension" auf "file" umgeleitet und die POST-Daten gehen verloren.

Dies ist ein kleiner Fehler, der aber auch leicht übersehen werden kann. Es ist leicht anzunehmen, dass der Fehler im Code und nicht in der URL liegt, zumal das Array überhaupt zurückgegeben wird - man könnte also denken, die URL sei korrekt.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X