AngularJS から送信された HTTP POST により PHP に未定義の POST 変数が生成される
この設定では、AngularJS アプリケーションは HTTP POST リクエストを PHP に送信しますスクリプトを作成しましたが、PHP スクリプトは「電子メール」の未定義の値を受け取り、 'password' POST パラメータ。
原因のデバッグ
問題は、AngularJS によって送信される Content-Type ヘッダーと PHP によって予期されるデータ形式の不一致にあります。 AngularJS はデフォルトの Content-Type ヘッダーとして application/json を使用しますが、PHP スクリプトはフォームエンコードされたデータを期待します。
解決策 1: PHP で Application/JSON を使用する
解決策の 1 つは、AngularJS の Content-Type ヘッダーを application/json に変更し、PHP のfile_get_contents("php://input") は、生のリクエスト本文を取得します。その後、データを JSON から逆シリアル化できます。
$postdata = file_get_contents("php://input"); $request = json_decode($postdata); $email = $request->email; $pass = $request->password;
解決策 2: フォーム エンコードされたデータを送信する
あるいは、フォーム エンコードされたデータを送信するように AngularJS を構成することもできます。 。これには、クエリ文字列を手動で構築するか、jQuery.serialize() を使用することが含まれます。次に、クエリ文字列を URL エンコードし、リクエスト データとして設定する必要があります。
$email = $_POST['email']; $pass = $_POST['password'];
非推奨のメソッド
.success() メソッドと .error() メソッドは使用されないことに注意してください。コード内で言及されているものは非推奨です。代わりに .then() を使用してください。
以上がPHP スクリプトで AngularJS POST 変数が定義されていないのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。