AngularJS $ http.get无效。没有检索数据

时间:2014-10-30 21:32:11

标签: php angularjs codeigniter angularjs-http

我是AngularJS的新手,但我已经做了很多事情。 我做了一个$ http.post,就像一个魅力。

继承角度代码

$scope.login = function(user, pass) {
$scope.bIsVisible = false;

var dados = {"user": user, "pass": pass};
console.log(dados);

$http.post('http://base.corretoconcursos.com.br/cadernos/index.php/manageUsers/login', dados)
.success(function(data, status, headers, config) {
  if (data == false) 
  {
    $scope.isLogged = false;
    $scope.bIsVisible = true;
  } else {
    $scope.isLogged = true;
    $scope.userData = data;
    console.log(data);
  }
})
.error(function(data, status, headers, config) {
  alert('failed');
  $scope.bIsVisible = true;
});

manageUsers / login 功能

function login()
{
    $postdata = file_get_contents("php://input");
    $data = json_decode($postdata);

    $username = $data->user;
    $password = md5($data->pass);

    $datafrombase = $this->UsersModel->getUser(array(
        'user' => $username,
        'pass' => $password
        ));

    if ($datafrombase != null) {
        $user = array(
                    'user' => $datafrombase['user'],
                    'type' => $datafrombase['type'],
                    'logged_in' => true
                    );
        $this->session->set_userdata($user);
    }

    if ($datafrombase != null)
        print_r(json_encode($datafrombase));
    else
        return false;
}

好的。它正在工作。我从数据库中检索一些数据并确定。真正的问题是,当我执行 $ http.get 并且只是通过在数据库上执行请求时,它在我执行控制台时不会发回我想要的数据。 log(数据),它显示了一个完全HTML页面,实际上是正在显示的页面。我获得了200状态,但是,HTML页面即将推出。不知道为什么。

继承人角色代码

$scope.setLoggedOn = function(on) {

if (on) {

    $http.get('http://base.corretoconcursos.com.br/cadernos/index.php/manageUsers/retrieveLogin')
      .success(function(data, status) {
          console.log(data);
      })
      .error(function(data, status, headers, config) {
        alert('failed');
      });
}
else
  $scope.isLogged = false;
};

继续 PHP代码功能我正在检索。

function retrieveLogin()
{
    $user = null;

    $user = array(
        'user' => $this->session->userdata('user'),
        'type' => $this->session->userdata('type'),
        'logged_in' => true
        );

    print_r(json_encode($user));
}

我被困住了。我甚至尝试在php函数中执行' return true&#39 ;; 返回'字符串&#39 ;; 但是什么都行不通。我做错了什么?

2 个答案:

答案 0 :(得分:1)

想出来。如果你在会话中使用CodeIgniter;并检查构造函数是否有人登录,让他们看到该页面;当你执行$ http.get时,它将运行构造函数并运行该条件,如果他们看不到该页面,即使你只是通过AJAX从该控制器发出请求,它也不会让你提出要求。

我认为$ http.get只会请求函数(i-e,verifyUserInDatabase();)并提供数据,但事实证明,它没有。

感谢您的帮助。

答案 1 :(得分:0)

$ datafrombase永远不会在retrieveLogin()中设置,因此angular不会收到任何内容。