Heim >Backend-Entwicklung >PHP-Tutorial >Warum fehlen Axios POST-Anfragedaten in den PHP-Variablen $POST und $REQUEST?

Warum fehlen Axios POST-Anfragedaten in den PHP-Variablen $POST und $REQUEST?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-10-22 23:17:29993Durchsuche

Why is Axios POST Request Data Missing from PHP's $POST and $REQUEST Variables?

Axios-Posting-Parameter in PHP-Variablen nicht verfügbar

Dieses Codefragment verwendet die Axios-Bibliothek, um eine POST-Anfrage zu stellen und den Content-Type-Header festzulegen an application/x-www-form-urlencoded:

axios({
    method: 'post',
    url,
    headers: { 'Content-Type': 'application/x-www-form-urlencoded' },
    data: {
        json,
        type,
    }   
})  

Die entsprechenden PHP-Variablen $_POST und $_REQUEST bleiben jedoch nach der Anfrage leer. Stattdessen scheint file_get_contents("php://input") die Daten zu empfangen.

Ursache und Lösung

Die Diskrepanz ergibt sich daraus, wie Axios Daten standardmäßig serialisiert . Es konvertiert JavaScript-Objekte in JSON, was PHP zum Auffüllen von $_POST nicht nativ unterstützt. PHP akzeptiert nur die maschinenverarbeitbaren Formate, die von HTML-Formularen unterstützt werden: application/x-www-form-urlencoded und multipart/form-data.

Um dieses Problem zu beheben, haben Sie mehrere Möglichkeiten:

  • Browser:

    • Verwenden Sie die URLSearchParams-API:

      var params = new URLSearchParams();
      params.append('param1', 'value1');
      params.append('param2', 'value2');
      axios.post('/foo', params); 
    • Verwenden Sie die qs-Bibliothek :

      var qs = require('qs');
      axios.post('/foo', qs.stringify({ 'bar': 123 }));
  • PHP anpassen:

    • PHP so anpassen, dass JSON gemäß dieser Antwort verarbeitet wird: [Link zur Antwort]

Das obige ist der detaillierte Inhalt vonWarum fehlen Axios POST-Anfragedaten in den PHP-Variablen $POST und $REQUEST?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn