在Angular中发送$http.post数据。Php接收到空数据

16 浏览
0 Comments

在Angular中发送$http.post数据。Php接收到空数据

就像标题所说的那样。我想通过$http.post请求向我的后端发送php请求,但是不起作用。让我今天给你展示我的代码:

function obtenerSesion() { 
        return $http.post(loginUrl,
                 {params: {
                     username: 'prueba123',
                     password: 'prueba123'}
                 })
            .then(function(response) {
                debugger;
                canchas = response.data;
                return canchas;
        })
        .catch(generarError);
    }

在我的PHP文件中,我有这段代码:

.
.
22.    $nombreUsuario= $_POST["username"];
23.    $contrasenia=    $_POST["password"];
.
.

我在响应中收到状态码"200",但是当执行php时,error.txt捕获到以下错误信息:

在第22行未定义索引

你能告诉我,为什么我的php没有接收到数据吗?

谢谢!

//编辑//

login.php

query("SELECT ....);
if(count($result) == 0){
    ...
    ...

如果我将$nombreUsuario='prueba123'和$contrasenia='prueba123'硬编码,php就能完美运行!

0
0 Comments

问题出现的原因是在发送数据时,将数据包装在一个额外的"params"对象中,导致PHP接收到的数据为空。解决方法是在发送数据时,直接发送包含用户名和密码的对象,然后在PHP中读取原始输入并反序列化JSON数据。

在Angular中,正确的代码如下:

function obtenerSesion() {
    return $http.post(loginUrl, {
            username: 'prueba123',
            password: 'prueba123'
        })
        .then(function(response) {
            debugger;
            canchas = response.data;
            return canchas;
        })
        .catch(generarError);
}

在PHP中,读取原始输入并反序列化JSON的代码如下:

$postdata = file_get_contents("php://input");
$request = json_decode($postdata);
$nombreUsuario = $request->username;
$contrasenia = $request->password;

另外,在与聊天时,还提供了另一种解决方法,即将请求的编码格式从"application/x-www-form-urlencoded"更改为特定的需求。

感谢回答,但我在PHP中仍然遇到相同的错误。你可以发表更多关于你的PHP代码吗?

我刚刚编辑了PHP代码。

好的,你需要在PHP中读取原始输入,然后反序列化JSON。

有没有一种方法可以使用_POST来获取数据?因为另一个Java应用程序使用了这个PHP。

是的,可以参考Phil的评论。

请继续在聊天中讨论:http://chat.stackoverflow.com/rooms/126280/discussion-between-federick-jons-and-nedev

0