angular $ http.post返回代码302

时间:2015-02-13 10:43:56

标签: angularjs angular-services

我有以下php:

    public function getLoggedInUser()
{
    if($this->isAjax())
    {
        exit (json_encode($_SESSION['User']));
    }
}

以下角度:

    userModule.controller('UserController', [ '$http', function($http)
{
    var userCtrl = this;
    this.user = {};

    $http.post('/User/getLoggedInUser', {request: 'ajax'}).success(function(data)
    {
       userCtrl.user = data;
    });
}]);

我得到代码302但没有找到结果且php脚本没有运行。

我做错了什么?

更新

调试后我的PHP核心我可以看到变量request没有发送到服务器。

为什么不呢?

1 个答案:

答案 0 :(得分:1)

注意我不是PHP专家,但是几天前我做了一些关于另一个AngularJS post request的测试,这与这个很相似。所以我的解决方案基于我之前的PHP后期数据体验。此处还使用了$_SESSION的php手册。

首先,我将你的php代码放在 getLoggedInUser.php 文件中,如下所示:

<?php
 if ($_SERVER["REQUEST_METHOD"] === "POST")
 {
    echo $_SESSION["User"];  
 }
?>

然后对其进行一些更改 UserController

//added  $scope in the controller's function parameters, just in case
userModule.controller('UserController', [ '$http', function($scope, $http)
{
    var userCtrl = this;
    this.user = {};
  //let’s pass empty data object
   var dataObj = {};
    $http.post('User/getLoggedInUser.php', dataObj).
       success(function (data, status, headers, config)
       {     
              console.log("success");

              userCtrl.user = data;
              //if the above doesn’t work, try something like below
              // $scope.userCtrl.user = data;
      })
      .error(function (data, status, headers, config)
      { 
              console.log("error");
      }); 
}]);

我希望这有助于解决这个问题。

一些注意事项:AngularJS对我来说是一个新手,如果有人对这个帖子的调用有不同的看法,那么随意评论这个解决方案:-)顺便说一句,我看了一些其他的php post issue解决方案(没有AngularJS),如this one,我仍然不确定处理这个帖子问题的最佳方法是什么。