ホームページ >ウェブフロントエンド >jsチュートリアル >AngularJS HTTP POST パラメータが PHP で定義されていないのはなぜですか?
PHP への AngularJS HTTP Post: 「未定義」値について
多くの AngularJS ユーザーは、PHP に POST リクエストを送信する際に問題に遭遇します。 POSTパラメータの「未定義」値。この記事では、根本的な原因を掘り下げ、この問題を解決するための解決策を提供します。
Content-Type Header Default
この問題の根本は、デフォルトの "Content-Type Header" にあります。 Type" ヘッダーは、HTTP POST リクエストの AngularJS によって使用されます。デフォルトでは、AngularJS はこのヘッダーを「application/json」に設定し、リクエスト本文を JSON データとしてシリアル化する必要があることを示します。
フォームエンコードされたデータと JSON の比較
ただし、PHP コードがフォームエンコードされたデータ (つまり、次の形式のデータ) を想定している場合は、 "fieldname=value&fieldname=value") を指定すると、$_POST 配列に適切に値を設定できなくなります。これを解決するには、生の入力ストリームを JSON として読み取るように PHP スクリプトを変更するか、フォーム エンコードされたデータを送信するように AngularJS コードを調整します。
解決策 1: PHP で生の入力を JSON として読み取る
この解決策には、生の入力データを JSON として読み取り、逆シリアル化して、値を手動で POST します。これは、次のコードを使用して実行できます。
$postdata = file_get_contents("php://input"); $request = json_decode($postdata); $email = $request->email; $pass = $request->password;
解決策 2: AngularJS からフォーム エンコードされたデータを送信する
で $_POST 機能を使用したい場合PHP では、クエリ文字列を手動で作成し、それを AngularJS リクエストのデータとして送信できます。クエリ文字列は「フィールド名=値&フィールド名=値」の形式で、URL エンコードされている必要があります。 JavaScript で encodeURIComponent() を使用すると、適切なエンコードを保証できます。
以上がAngularJS HTTP POST パラメータが PHP で定義されていないのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。