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 側で正しく受信されることを確認できます。
免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。
Copyright© 2022 湘ICP备2022001581号-3