0

我是 AngularJS 的新手,但我已经做了很多事情。我做了一个 $http.post,效果很好。

这是Angular代码

$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并且仅通过是否对数据库执行请求时,它不会发回我想要的数据,当我执行 console.log(data) 时,它会向我显示完全是 HTML 页面,实际上就是正在显示的页面。我得到一个 200 状态 OK,但是,一个 HTML 页面即将到来。不知道为什么。

这是Angular代码

$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 函数内部,返回 'string';但什么都行不通。我做错了什么?

4

2 回答 2

1

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

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

谢谢您的帮助。

于 2014-10-31T18:50:17.883 回答
0

$datafrombase 从未在retrieveLogin() 中设置,因此角度不会收到任何东西。

于 2014-10-30T21:57:19.650 回答