Angular - 将HTTP发布数据发送到服务器[HOW TO]

时间:2015-12-09 15:39:04

标签: javascript php angularjs

我尝试使用POST方法将数据从我的登录表单发送到PHP后端写入。

我的Angular代码如下:

if((isset($_POST['login']) AND isset($_POST['password'])))
{
    $username = $_POST['login'];
    $password = $_POST['password'];
    echo $username;
}
else
    var_dump($_POST);

然后我尝试在我的PHP上捕获它:

<% form_for @user :url => {:action => "attempt_login"},  do |f| %>

此语句始终转到else并返回空数组。 有人可以告诉我我做错了什么或如何调试这个? 因为它看起来我正确地从角度发送数据,但它没有来到服务器。

由于 亲切的问候 Andurit

4 个答案:

答案 0 :(得分:3)

使用此:

json_decode(file_get_contents('php://input'));

检查开发人员栏中的网络标签。您可以看到您在http正文中发送了有效负载数据。这就是$ _POST数组为空的原因。

答案 1 :(得分:2)

一些旧的服务器端Web库(如Coldfusion / .NET / PHP)在默认情况下抓取POST BODY时遇到问题(这是$http发送数据的方式)。

您可以参考How to get body of a POST in php?来了解如何编写PHP,使其接受通过帖子发送数据的当前和正确标准。

  

访问POST或PUT请求(或任何其他HTTP)的实体主体   法):

$entityBody = file_get_contents('php://input');
  

此外,STDIN常量是php://输入的已打开流,所以   你也可以这样做:

$entityBody = stream_get_contents(STDIN);

答案 2 :(得分:0)

尝试:

data: { login : $scope.login, password : $scope.password }

答案 3 :(得分:0)

$http.post('url', {login: 'Alex', password: 'qwerty'}).then(function(){},function(){});