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;
}

大丈夫。それは働いています。データベースからいくつかのデータを取得し、OK です。本当の問題は、私が$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));
}

私は立ち往生しています。「trueを返す」だけでも試してみました。php 関数内で、'string' を返します。しかし、何も機能しません。私は何を間違っているのですか?

4

2 に答える 2

1

理解した。セッションで CodeIgniter を使用している場合。コンストラクターをチェックインして、人々がログインしてそのページを表示できるようにするかどうかを確認します。$http.get を実行すると、コンストラクターが実行され、その条件が実行されます。そのページが表示されない場合は、AJAX を介してそのコントローラーから要求を行っているだけであっても、要求を行うことはできません。 .

$http.get は関数 (つまり、verifyUserInDatabase();) を要求し、データを提供するだけだと思っていましたが、そうではありませんでした。

助けてくれてありがとう。

于 2014-10-31T18:50:17.883 に答える