首页 >后端开发 >php教程 >为什么我的 PHP 脚本中的 AngularJS $http.post() 变量未定义?

为什么我的 PHP 脚本中的 AngularJS $http.post() 变量未定义?

Linda Hamilton
Linda Hamilton原创
2024-12-22 16:22:14547浏览

Why are my AngularJS $http.post() variables undefined in my PHP script?

AngularJS:使用 PHP 进行 HTTP POST 未定义变量

使用 $http.post() 提交 AngularJS 表单时,PHP 收到的变量尽管收到 200 OK,但脚本可能显示为未定义

原因

默认情况下,AngularJS 将 HTTP POST 请求的 Content-Type 标头设置为 application/json。但是,如果发送表单编码的有效负载而不是 JSON 数据,PHP 将不会按预期填充 $_POST 数组。

解决方案

主要有两种解决方案:

  1. 使用默认 JSON标头:

    • 保留 application/json 的默认 Content-Type 标头。
    • 在 PHP 中,读取原始输入并使用 json_decode() 反序列化 JSON 数据。
  2. 发送表单编码数据:

    • 将 Content-Type 标头设置为 application/x-www-form-urlencoded。
    • 手动形成查询字符串,例如 email=example @email.com&password=secret 并将其作为数据负载发送。
    • 确保使用以下方式对查询字符串进行 URL 编码encodeURIComponent().

修改后的 PHP 示例

对于第二种解决方案:

$query_string = file_get_contents("php://input");
parse_str($query_string, $data);
$email = $data['email'];
$password = $data['password'];

以上是为什么我的 PHP 脚本中的 AngularJS $http.post() 变量未定义?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn