AngularJS HTTP Post to PHP: 未定義変数の対処
AngularJS コードで、PHP スクリプトにポストされたデータが未定義のように見えるという問題が発生しています。これを解決するには、詳細を調べる必要があります。
AngularJS コードでは、「application/x-www-form-urlencoded」の Content-Type ヘッダーを持つ HTTP POST リクエストを定義しました。ただし、データはクエリ文字列としてフォーマットされていません。 PHP は $_POST に依存してフォームエンコードされたデータを受信します。これには、データをキーと値のペアとしてフォーマットする必要があります。
この問題を解決するには、2 つのオプションがあります:
オプション 1: JSON を使用する
AngularJS のデフォルトでは、「application/json」コンテンツ タイプが使用されます。 HTTPリクエストのヘッダー。これを活用するには、PHP で生の入力を読み取り、JSON を逆シリアル化します。これは、次の PHP コードを使用して実行できます。
$postdata = file_get_contents("php://input"); $request = json_decode($postdata); $email = $request->email; $pass = $request->password;
オプション 2: クエリ文字列を手動でフォーマットする
$_POST を使用したい場合は、クエリ文字列を手動でフォーマットできます。データをクエリ文字列として使用します。 URL エンコードされていることを確認してください。 JavaScript では、次のコマンドを使用してこれを実現できます。
let data = "email=" + encodeURIComponent($scope.email) + "&password=" + encodeURIComponent($scope.password);
HTTP リクエスト データを、現在の形式ではなく、この形式のクエリ文字列に設定します。これらの調整により、AngularJS HTTP POST リクエストはデータを PHP スクリプトに正しく送信し、未定義変数の問題を解決します。
以上がPHP スクリプトで AngularJS HTTP POST 変数が定義されていないのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。