一尘不染

Codeigniter + Angular Js:如何接收JSON数据

angularjs

这种情况:

我有一个用Angular JS制作的简单应用程序,它通过codeigniter中的API与服务器通信。

该应用程序中有一个登录系统。当用户输入电子邮件和密码时,此数据将发送到服务器,如果电子邮件存在且密码匹配,则返回true。

我做了很多尝试,但没有弄清楚我该怎么做。

这是代码:

表格:

<form role="form" method="post" novalidate ng-submit="submitForm()">
  <div class="form-group">
    <label for="exampleInputEmail1">Email address</label>
    <input type="email" class="form-control" name="email" ng-model="user.name" placeholder="Enter email">
  </div>
  <div class="form-group">
    <label for="exampleInputPassword1">Password</label>
    <input type="password" class="form-control" name="password" ng-model="user.password" placeholder="Password">
  </div>

  <button type="submit" class="btn btn-default">Submit</button>
</form>

这是Angular js控制器:

 $scope.authorized = false;

 $scope.user = {};

 $scope.submitForm = function() 
 {
    console.log("posting data....");

    $http({
        method : 'POST',
        url : 'http://127.0.0.1/api/main/login',
        headers: {'Content-Type': 'application/json'},
        data : JSON.stringify({email:$scope.user.email, password:$scope.user.password})
    }).success(function(data) {
         console.log(data);

        $scope.authorized = data;

        if ($scope.authorized) { $location.path("memberArea"); };

    });

}

codeigniter方法 中尝试了很多东西。现在只有这样:

function login()
{
    print json_encode($_POST);
}

但是我不知道是否可以将数据接收到$ _POST中,因为它似乎是空的。

所以问题是:

如何使用codeigniter方法接收数据?最好先发送为JSON,然后发送为json_decode?我也尝试过json_decode($ _ POST,true); 但是是空的。但是,如果数据不在$ _POST中呢?我有点困惑。

谢谢你的帮助!

编辑:

谢谢你们的答复。那是尝试过的一件事。但是不知何故。现在,例如,方法是这样的:

function login()
{
    $email = $this->input->post('email');
    var_dump($email);
    print json_encode($email);
}

但是返回的是布尔值false。


阅读 256

收藏
2020-07-04

共1个答案

一尘不染

谢谢回复。解决方法如下

$obj=json_decode(file_get_contents('php://input'));

你可以通过测试

print_r(json_decode(file_get_contents('php://input')));
2020-07-04