簡體   English   中英

使用json時嘗試獲取非對象錯誤的屬性

[英]Trying to get property of non-object error when using json

我不斷收到以下錯誤


注意 :嘗試在第4行的D:\\ XAMPP \\ htdocs \\ website \\ php \\ login.php中獲取非對象的屬性

注意 :嘗試在第5行的D:\\ XAMPP \\ htdocs \\ website \\ 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);

?>

任何幫助,將不勝感激。

難道不是彼此調用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);
      });   

$ 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

    });
};

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM