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!