Heim >Backend-Entwicklung >PHP-Tutorial >Warum fehlen Axios POST-Anfragedaten in den PHP-Variablen $POST und $REQUEST?
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:
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!