PHP への Angular HTTP POST: 未定義の POST 値の処理
AngularJS では、PHP エンドポイントに対して HTTP POST リクエストを実行すると、未定義の値が発生する場合がありますサーバー側の POST 値。これは、予想されるデータ形式と Angular アプリケーションによって送信される実際のデータとの間に不一致がある場合に発生する可能性があります。
この問題を解決するには、Content-Type ヘッダーが適切に設定されていることを確認することが重要です。デフォルトでは、AngularJS はこのヘッダーを「application/json」に設定します。ただし、フォーム エンコードされたデータを送信する場合は、これをオーバーライドする必要があります。
提供されたコードでは、次の行は Content-Type ヘッダーを「application/x-www-form-urlencoded;」に設定します。 charset=UTF-8":
$http.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded; charset=UTF-8';
ただし、これには、送信されるデータをフォームエンコード形式に一致するように変更する必要があります。データをオブジェクトとして送信する代わりに、クエリ文字列に変換する必要があります。これは、jQuery.serialize() を使用するか、encodeURIComponent() を使用してクエリ文字列を手動で構築することで実行できます。
あるいは、PHP の $_POST 機能を使用したい場合は、デフォルトのヘッダー設定を保持し、リクエスト本文から生の入力を読み取り、JSON をデコードするための PHP コード。これは、次のコードで実現できます:
$postdata = file_get_contents("php://input"); $request = json_decode($postdata); $email = $request->email; $pass = $request->password;
データ形式とヘッダー設定を調整することで、POST 値が PHP 側で正しく受信されることを確認できます。
以上がAngular HTTP POST 値が PHP で定義されていないのはなぜですか?それを修正するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。