HTTP-POST, der von AngularJS gesendet wird, führt zu undefinierten POST-Variablen in PHP
In unserem Setup sendet eine AngularJS-Anwendung eine HTTP-POST-Anfrage an ein PHP Skript, aber das PHP-Skript empfängt undefinierte Werte für den POST „E-Mail“ und „Passwort“. Parameter.
Debuggen der Ursache
Das Problem liegt in der Nichtübereinstimmung zwischen dem von AngularJS gesendeten Content-Type-Header und dem von PHP erwarteten Datenformat. AngularJS verwendet application/json als standardmäßigen Content-Type-Header, aber das PHP-Skript erwartet formcodierte Daten.
Lösung 1: Verwenden Sie Application/JSON in PHP
Eine Lösung besteht darin, den Content-Type-Header in AngularJS in application/json zu ändern und PHPs file_get_contents("php://input") zu verwenden, um die Rohanforderung abzurufen Körper. Die Daten können dann aus JSON deserialisiert werden.
$postdata = file_get_contents("php://input"); $request = json_decode($postdata); $email = $request->email; $pass = $request->password;
Lösung 2: Formularcodierte Daten senden
Alternativ kann AngularJS so konfiguriert werden, dass formularcodierte Daten gesendet werden . Dazu gehört das manuelle Erstellen einer Abfragezeichenfolge oder die Verwendung von jQuery.serialize(). Die Abfragezeichenfolge sollte dann URL-codiert und als Anforderungsdaten festgelegt werden.
$email = $_POST['email']; $pass = $_POST['password'];
Veraltete Methoden
Beachten Sie die Methoden .success() und .error() Die im Code erwähnten Elemente sind veraltet. Verwenden Sie stattdessen .then().
Das obige ist der detaillierte Inhalt vonWarum sind meine AngularJS-POST-Variablen in meinem PHP-Skript nicht definiert?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!