使用 json 时尝试获得 属性 的非对象错误
Trying to get property of non-object error when using json
我不断收到以下错误
通知:试图在线获取 D:\XAMPP\htdocs\website\php\login.php 中的非对象 属性 4
通知:试图在线获取 D:\XAMPP\htdocs\website\php\login.php 中的非对象 属性 5
我正在使用 AngularJS 从表单获取输入,使用 console.log 函数将数据发送到 php 并使用 [= 解码 json 文件45=],然后检查数据库以查找与输入值匹配的信息。
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
时 non-object。因此,您的脚本正在处理 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
});
};
我不断收到以下错误
通知:试图在线获取 D:\XAMPP\htdocs\website\php\login.php 中的非对象 属性 4
通知:试图在线获取 D:\XAMPP\htdocs\website\php\login.php 中的非对象 属性 5
我正在使用 AngularJS 从表单获取输入,使用 console.log 函数将数据发送到 php 并使用 [= 解码 json 文件45=],然后检查数据库以查找与输入值匹配的信息。
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
时 non-object。因此,您的脚本正在处理 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
});
};