我有一张标签是ng-submit="login()的表格

该函数在javascript中可以很好地调用.

function LoginForm($scope, $http)
{
    $http.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded; charset=UTF-8';

    $scope.email    = "fsdg@sdf.com";
    $scope.password = "1234";

    $scope.login = function()
    {
        data = {
            'email' : $scope.email,
            'password' : $scope.password
        };

        $http.post('resources/curl.php', data)
        .success(function(data, status, headers, config)
        {
            console.log(status + ' - ' + data);
        })
        .error(function(data, status, headers, config)
        {
            console.log('error');
        });
    }
}

我收到PHP文件返回的200OK响应,然而,返回的数据显示emailpassword是未定义的.这是我所有的php.

<?php
$email = $_POST['email'];
$pass  = $_POST['password'];
echo $email;
?>

知道我为什么会得到未定义的POST个值吗?

EDIT

我想指出的是,因为这似乎是一个流行的问题(但它已经过时了),.success.error已经被弃用,你应该使用.then,正如@James Gentes在commments中指出的那样

推荐答案

angularjs .post()默认内容类型标题为application/json.您正在重写它以传递表单编码的数据,但是您没有更改data值以传递适当的查询字符串,因此PHP并没有像您预期的那样填充$_POST.

我的建议是只使用默认的angularjs设置application/json作为标题,读取PHP中的原始输入,然后反序列化JSON.

这可以在PHP中实现,如下所示:

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

或者,如果您严重依赖$_POST功能,您可以形成一个类似email=someemail@email.com&password=somepassword的查询字符串,并将其作为数据发送.确保此查询字符串是URL编码的.如果手动构建(而不是使用类似jQuery.serialize()的代码),Javascript的encodeURIComponent()应该可以为您完成此任务.

Php相关问答推荐

来自另一个表的SQL过滤器

在AJX请求中使用简写后,FormData出现非法调用错误

如何在搜索域名时重定向到登陆页?

在特定日期之间使用特定的元密钥销售产品

Nginx重写扩展名为.php的动态URL

WooCommerce在store 页面上显示兼容多语言的产品属性

PHP中的圆生成器在国际日期变更线上失败

如何在函数中定位WooCommerce产品循环

PHP测试字符串的所有POST值

从订单项目中获取ACF WooCommerce产品价值

使用PHP编码的字符串与使用OpenSSL编写的shell 代码之间的差异

如何在php网站代码中清理浏览器缓存

Laravel 10.x在到达控制器之前将查询参数强制转换为正确的类型

扩展 WooCommerce 类触发未捕获错误:未找到WC_Coupon类

用户注册表单中的 HTTP 错误 405

PHP:数组的等边

设置GA4 PHP API的setSubject以允许访问所有管理员账户属性

Laravel:ArgumentCountError: 函数 App\Mail 的参数太少

为什么在 phpunit 的开头测试 PHP_VERSION?

如何在 WooCommerce 中显示每个自定义选项卡的内容