問題の説明:
AngularJS から HTTP POST リクエストを実行するときPHP スクリプトに送信すると、PHP スクリプトは投稿されたフォームの未定義の値を受け取りますdata.
原因:
AngularJS は、application/json への HTTP Post リクエストの Content-Type ヘッダーをデフォルトに設定します。ただし、質問のサンプル コードでは、Content-Type ヘッダーを application/x-www-form-urlencoded に設定します。その結果、AngularJS によって送信されたデータは、PHP の $_POST 機能で予期される形式ではありません。
解決策 1:
デフォルトの AngularJS Content-Type ヘッダーを使用するapplication/json を編集し、PHP で生の入力を読み取り、デシリアライズします。 JSON.
$postdata = file_get_contents("php://input"); $request = json_decode($postdata); $email = $request->email; $pass = $request->password;
解決策 2:
$_POST 機能に依存する場合は、データからクエリ文字列を形成し、それをリクエスト本文として送信します。クエリ文字列は URL エンコードされています。
data = "email=" + encodeURIComponent($scope.email) + "&password=" + encodeURIComponent($scope.password);
以上がAngularJS から PHP POST: 変数が未定義なのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。