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中文网其他相关文章!