如何从PHP返回到Ionic Controller?

如何从PHP返回到Ionic Controller?,php,mysql,angularjs,cordova,ionic-framework,Php,Mysql,Angularjs,Cordova,Ionic Framework,这是我的密码。请帮助我将PHP条件下的id返回给angular controller。我在控制台日志中没有定义。这是我的密码。它的错误和坏代码?谢谢 我的离子控制器 .controller('LoginCtrl', function($scope, $http){ $scope.LoginUser = function(info){ console.log(info.username, info.password); var xhr = $http.post('http://

这是我的密码。请帮助我将PHP条件下的id返回给angular controller。我在控制台日志中没有定义。这是我的密码。它的错误和坏代码?谢谢

我的离子控制器

.controller('LoginCtrl', function($scope, $http){
  $scope.LoginUser = function(info){
    console.log(info.username, info.password);
    var xhr = $http.post('http://pvcm.com/api/tambah_user.php', info);
    console.log(xhr);
  };
})
我的PHP
    if(isset($data)){
        $host = "";
        $username_database = "";
        $pass_database = "";
        $database = "";

        $conn = new mysqli($host, $username_database, $pass_database, $database);

        $sql_petugas = "SELECT * FROM petugas WHERE id_petugas = '$data->username' AND password_petugas = '$data->password'";
        $sql_masyarakat = "SELECT * FROM masyarakat WHERE id_masyarakat = '$data->username' AND password_masyarakat = '$data->password'";
        //$hasil = mysql_num_rows($sql);
        $hasil_petugas=mysqli_query($conn, $sql_petugas); 
        $hasil_masyarakat=mysqli_query($conn, $sql_masyarakat); 

        $count_petugas = mysqli_num_rows($hasil_petugas);
        $count_masyarakat = mysqli_num_rows($hasil_masyarakat);

        if($count_petugas > 0){
            return json_decode('id'=>100);
        }else if($count_masyarakat > 0){
            return "masyarakat ketemu";
        }

        $qry = $conn->query($sql);
        $conn->close();
    }
?>

在离子方面,你失去了承诺。
$http
返回一个承诺,而不是数据本身,这意味着您必须使用另一个函数来获取数据。像这样:

.controller('LoginCtrl', function($scope, $http){
  $scope.LoginUser = function(info){
    console.log(info.username, info.password);
    var xhr;
    $http.post('http://pvcm.com/api/tambah_user.php', info)
         .then(function(phpData){
                    xhr = phpData;
          })
         .catch(function(error){
                    xhr = error;
          });
    console.log(xhr);
  };
})
在这里,如果请求成功,则执行
.then()
中的函数,并获取
phpData
参数中的数据,如果请求出错,则执行
.catch()


在PHP代码中,我认为您必须打印结果,而不是返回结果。比如
echo-json\u解码('id'=>100)

在离子方面,你失去了承诺。
$http
返回一个承诺,而不是数据本身,这意味着您必须使用另一个函数来获取数据。像这样:

.controller('LoginCtrl', function($scope, $http){
  $scope.LoginUser = function(info){
    console.log(info.username, info.password);
    var xhr;
    $http.post('http://pvcm.com/api/tambah_user.php', info)
         .then(function(phpData){
                    xhr = phpData;
          })
         .catch(function(error){
                    xhr = error;
          });
    console.log(xhr);
  };
})
在这里,如果请求成功,则执行
.then()
中的函数,并获取
phpData
参数中的数据,如果请求出错,则执行
.catch()


在PHP代码中,我认为您必须打印结果,而不是返回结果。比如
echo-json\u解码('id'=>100)

你好,平奎,谢谢你的帮助。我仍然有这样一个错误:注意:3是我的id,asd是我在数据库中的密码哦,这是因为您的php保护您不受来自外部源的ajax请求的影响。您可以通过在php代码中添加如下标题来传递它:header('Access-Control-Allow-Origin:');*允许任何来源,所以要小心。是的,我添加了它,但我的程序仍然有那个错误控制台。为什么?你好,平奎,谢谢你的帮助。我仍然有这样一个错误:注意:3是我的id,asd是我在数据库中的密码哦,这是因为您的php保护您不受来自外部源的ajax请求的影响。您可以通过在php代码中添加如下标题来传递它:header('Access-Control-Allow-Origin:');*允许任何来源,所以要小心。是的,我添加了它,但我的程序仍然有那个错误控制台。为什么?