2016-01-10 72 views
1

时,我不断收到以下错误试图让非对象错误的性质使用JSON


注意:试图让非对象的财产d:\ XAMPP \ htdocs中\网站\在线PHP \ login.php中

注意:试图让非对象的财产d:\ XAMPP \ htdocs中\在线网站\ PHP \ login.php中

我使用AngularJS从窗体获取输入,使用console.log函数将数据发送到php并使用php解码json文件,然后检查数据库以查找与输入值匹配的信息。

JS:

$scope.login = function(acc) { 
    console.log(acc);//getting data input by user 

    //post is used to create 
    $http.post('php/login.php', {'user': $scope.acc.user, 'pass': $scope.acc.pass}).success(function(data) { 
     console.log(data); 
     if (data) {//row inserted 
      // if not successful, bind errors to error variables 
      console.log("Succesful"); 
      $scope.insertMessage = "Data inserted"; 
     } else { 
      // if unsuccessful, bind success message to message 
      $scope.insertMessage = "Data not inserted"; 
     } 
     $scope.acc="";//reset values in form to empty 
     //redirect to list 
    }); 

    $http.get('php/login.php').success(function(logged){ 
      $scope.loggedin = logged; 
      console.log($scope.loggedin); 
     }) 
     .error(function(err){ 
      $log.error(err); 
     }); 
}; 

PHP:

<?php 
$data = json_decode(file_get_contents("php://input")); 

$user = $data->user; 
$pass = $data->pass; 

require_once("connection.php"); 

$conn = connectToDb(); 
$query= "SELECT count(*) 
FROM tbl_logdetails 
WHERE username = '$user' and password = '$pass'"; 
$result = mysqli_query($conn, $query) 
    or die("error in query: ".mysqli_error($conn)); 
$row = mysqli_fetch_row($result); 
$count = $row[0]; 

echo $count; 

if($count == 0){ 
    $logged = false; 
}else{ 
    $logged=true; 
} 
echo json_encode($logged); 

?> 

任何帮助,将不胜感激。

+1

var_dump'$ data = json_decode(file_get_contents(“php:// input”));''你得到了什么结果?这是你的问题所在。 –

+0

@ChrisTrudeau对象(stdClass的)#1(2){ [ “用户”] => 串(5) “管理员” [ “通”] => 串(3) “123” } – ardox

+0

如果是这样的输出,你有什么应该工作,你把'var_dump'在确切的代码不工作,并运行它? –

回答

1

您是不是使用POST调用登录,然后用GET登录对方?而且您没有向GET登录尝试传递任何内容,因此当您使用json_decode时,这是非对象。因此,您的脚本正在进行POST尝试,但在GET尝试中打印出错消息。

删除此部分:

$http.get('php/login.php').success(function(logged){ 
      $scope.loggedin = logged; 
      console.log($scope.loggedin); 
     }) 
     .error(function(err){ 
      $log.error(err); 
     }); 
0

的$ http.get是多余的,并再次执行login.php中没有提供任何参数,移除$ http.get是解决办法......

$scope.login = function(acc) { 
    console.log(acc);//getting data input by user 

    //post is used to create 
    $http.post('php/login.php', {'user': $scope.acc.user, 'pass': $scope.acc.pass}).success(function(data) { 
     console.log(data); 
     if (data) {//row inserted 
      // if not successful, bind errors to error variables 
      console.log("Succesful"); 
      $scope.insertMessage = "Data inserted"; 
      $scope.loggedin = data; 
      console.log($scope.loggedin); 
     } else { 
      // if unsuccessful, bind success message to message 
      $scope.insertMessage = "Data not inserted"; 
     } 
     $scope.acc="";//reset values in form to empty 
     //redirect to list 

    }); 
};