Heim >Backend-Entwicklung >PHP-Tutorial >Warum füllt Axios POST $_POST in PHP nicht mit JSON-Daten?
Axios-POST-Parameter füllen $_POST nicht aus
Bei Verwendung von Axios zum Ausführen einer POST-Anfrage mit einer Nutzlast, die aus JSON-Daten besteht, funktioniert PHP möglicherweise nicht Interpretieren Sie die Parameter von $_POST oder $_REQUEST korrekt. Stattdessen sind die Anforderungsdaten oft über file_get_contents("php://input") zugänglich.
Ursache:
Standardmäßig serialisiert Axios JavaScript-Objekte in JSON . PHP unterstützt JSON jedoch nicht als natives Datenformat für die $_POST-Population. Es akzeptiert nur die maschinenverarbeitbaren Formate, die von HTML-Formularen unterstützt werden:
Lösung:
Um dieses Problem zu beheben, können Sie die Axios-Anfrage ändern, um Daten im application/x-www-form-urlencoded-Format zu senden, das PHP korrekt verarbeiten kann. Es gibt zwei Hauptoptionen:
1. Verwenden der URLSearchParams-API (nur Browser):
var params = new URLSearchParams(); params.append('param1', 'value1'); params.append('param2', 'value2'); axios.post('/foo', params);
2. Verwendung der qs-Bibliothek (Node.js):
var qs = require('qs'); axios.post('/foo', qs.stringify({ 'bar': 123 }));
Diese Methoden stellen sicher, dass die Anforderungsdaten ordnungsgemäß in das application/x-www-form-urlencoded-Format serialisiert werden, sodass sie über $_POST in zugänglich sind PHP.
Alternativ könnten Sie PHP ändern, um JSON als gültiges Datenformat für $_POST zu verarbeiten, aber dieser Ansatz wird weniger empfohlen.
Das obige ist der detaillierte Inhalt vonWarum füllt Axios POST $_POST in PHP nicht mit JSON-Daten?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!