在Angular中发送$http.post数据。Php接收到空数据
在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就能完美运行!
问题出现的原因是在发送数据时,将数据包装在一个额外的"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