Heim  >  Artikel  >  Backend-Entwicklung  >  Warum füllt Axios POST $_POST in PHP nicht mit JSON-Daten?

Warum füllt Axios POST $_POST in PHP nicht mit JSON-Daten?

Linda Hamilton
Linda HamiltonOriginal
2024-10-23 01:04:30449Durchsuche

Why Doesn't Axios POST Populate $_POST in PHP with JSON Data?

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:

  • application/x-www-form-urlencoded
  • multipart/form-data

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!

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