首页 >web前端 >js教程 >为什么我的 AngularJS HTTP POST 参数在 PHP 中未定义?

为什么我的 AngularJS HTTP POST 参数在 PHP 中未定义?

Linda Hamilton
Linda Hamilton原创
2024-12-02 16:28:12939浏览

Why are my AngularJS HTTP POST parameters undefined in PHP?

AngularJS HTTP Post 到 PHP:了解“未定义”值

许多 AngularJS 用户在向 PHP 发送 POST 请求时遇到问题,导致POST 参数的“未定义”值。本文深入探讨了此问题的根本原因,并提供了解决此问题的解决方案。

Content-Type 标头默认

此问题的根源在于默认的“Content- AngularJS 用于 HTTP POST 请求的“类型”标头。默认情况下,AngularJS 将此标头设置为“application/json”,表示请求正文应序列化为 JSON 数据。

表单编码数据与 JSON

但是,如果您的 PHP 代码需要表单编码数据(即格式为“fieldname=value&fieldname=value”的数据),则不会能够正确填充 $_POST 数组。要解决此问题,您可以更改 PHP 脚本以将原始输入流读取为 JSON,或者调整 AngularJS 代码以发送表单编码数据。

解决方案 1:在 PHP 中将原始输入读取为 JSON

此解决方案涉及修改 PHP 代码以将原始输入数据读取为 JSON、反序列化并手动提取 POST 值。您可以使用以下代码来完成此操作:

$postdata = file_get_contents("php://input");
$request = json_decode($postdata);
$email = $request->email;
$pass = $request->password;

解决方案 2:从 AngularJS 发送表单编码数据

如果您更喜欢在中使用 $_POST 功能PHP,您可以手动创建查询字符串并将其作为 AngularJS 请求中的数据发送。查询字符串的格式应为“fieldname=value&fieldname=value”,并且应进行 URL 编码。您可以在 JavaScript 中使用encodeURIComponent()来确保正确的编码。

以上是为什么我的 AngularJS HTTP POST 参数在 PHP 中未定义?的详细内容。更多信息请关注PHP中文网其他相关文章!

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