ホームページ >ウェブフロントエンド >jsチュートリアル >AngularJS HTTP POST パラメータが PHP で定義されていないのはなぜですか?

AngularJS HTTP POST パラメータが PHP で定義されていないのはなぜですか?

Linda Hamilton
Linda Hamiltonオリジナル
2024-12-02 16:28:12933ブラウズ

Why are my AngularJS HTTP POST parameters undefined in 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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。