Heim >Web-Frontend >js-Tutorial >Warum sind meine AngularJS-HTTP-POST-Parameter in PHP undefiniert?

Warum sind meine AngularJS-HTTP-POST-Parameter in PHP undefiniert?

Linda Hamilton
Linda HamiltonOriginal
2024-12-02 16:28:12935Durchsuche

Why are my AngularJS HTTP POST parameters undefined in PHP?

AngularJS-HTTP-Post an PHP: „Undefinierte“ Werte verstehen

Viele AngularJS-Benutzer stoßen beim Senden von POST-Anfragen an PHP auf ein Problem, das dazu führt „undefinierte“ Werte für POST-Parameter. Dieser Artikel befasst sich mit der Grundursache und bietet Lösungen zur Lösung dieses Problems.

Content-Type Header Default

Die Ursache dieses Problems liegt in der Standardeinstellung „Content-Type Header Default“. Typ“-Header, der von AngularJS für HTTP-POST-Anfragen verwendet wird. Standardmäßig setzt AngularJS diesen Header auf „application/json“, was angibt, dass der Anforderungstext als JSON-Daten serialisiert werden soll.

Formularcodierte Daten vs. JSON

Wenn Ihr PHP-Code jedoch formcodierte Daten erwartet (d. h. Daten im Format „Feldname=Wert&Feldname=Wert“), ist dies nicht möglich um das $_POST-Array ordnungsgemäß zu füllen. Um dieses Problem zu beheben, können Sie entweder Ihr PHP-Skript so ändern, dass es den Roheingabestream als JSON liest, oder Ihren AngularJS-Code anpassen, um formularcodierte Daten zu senden.

Lösung 1: Roheingabe als JSON in PHP lesen

Diese Lösung beinhaltet die Änderung Ihres PHP-Codes, um die rohen Eingabedaten als JSON zu lesen, sie zu deserialisieren und die POST-Werte manuell zu extrahieren. Sie können dies mit dem folgenden Code tun:

$postdata = file_get_contents("php://input");
$request = json_decode($postdata);
$email = $request->email;
$pass = $request->password;

Lösung 2: Formularcodierte Daten von AngularJS senden

Wenn Sie lieber die $_POST-Funktionalität verwenden möchten Mit PHP können Sie manuell eine Abfragezeichenfolge erstellen und diese als Daten in Ihrer AngularJS-Anfrage senden. Die Abfragezeichenfolge sollte das Format „fieldname=value&fieldname=value“ haben und URL-codiert sein. Sie können encodeURIComponent() in JavaScript verwenden, um eine ordnungsgemäße Codierung sicherzustellen.

Das obige ist der detaillierte Inhalt vonWarum sind meine AngularJS-HTTP-POST-Parameter in PHP undefiniert?. 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