首页 >web前端 >js教程 >为什么我的 PHP 脚本中未定义 AngularJS HTTP POST 变量?

为什么我的 PHP 脚本中未定义 AngularJS HTTP POST 变量?

Mary-Kate Olsen
Mary-Kate Olsen原创
2024-12-02 04:43:13729浏览

Why are my AngularJS HTTP POST variables undefined in my PHP script?

AngularJS HTTP Post 到 PHP:解决未定义的变量

您的 AngularJS 代码遇到了发布到 PHP 脚本的数据显示为未定义的问题。为了解决这个问题,我们需要深入研究细节。

在您的 AngularJS 代码中,您定义了一个 Content-Type 标头为“application/x-www-form-urlencoded”的 HTTP POST 请求。但是,您的数据未格式化为查询字符串。 PHP 依赖 $_POST 接收表单编码数据,这需要将数据格式化为键值对。

要解决此问题,有两个选项:

选项 1:使用 JSON

AngularJS 默认使用“application/json”Content-Type 标头进行 HTTP 请求。您可以通过读取 PHP 中的原始输入并反序列化 JSON 来利用这一点。这可以使用以下 PHP 代码来完成:

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

选项 2:手动格式化查询字符串

如果您更喜欢使用 $_POST,您可以手动格式化您的数据作为查询字符串。确保它是 URL 编码的。在 JavaScript 中,您可以使用以下方法实现此目的:

let data = "email=" + encodeURIComponent($scope.email) + "&password=" + encodeURIComponent($scope.password);

将 HTTP 请求数据设置为此格式化的查询字符串而不是当前格式。通过这些调整,您的 AngularJS HTTP POST 请求将正确地将数据发送到您的 PHP 脚本,解决了未定义变量的问题。

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

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