angularjs+php+sql+json=空数组
使用angularjs通过json中交付的php从sql获取数据。当我直接点击php页面时,我看到了漂亮的json结果,但是通过我的角度http调用,我得到的只是一个空数组 sql.php:angularjs+php+sql+json=空数组,php,sql,angularjs,Php,Sql,Angularjs,使用angularjs通过json中交付的php从sql获取数据。当我直接点击php页面时,我看到了漂亮的json结果,但是通过我的角度http调用,我得到的只是一个空数组 sql.php: header("Content-Type: application/json; charset=UTF-8"); $conn = new mysqli("localhost", "****", "****", "****"); if(!$conn){ die("Connection failed:
header("Content-Type: application/json; charset=UTF-8");
$conn = new mysqli("localhost", "****", "****", "****");
if(!$conn){
die("Connection failed: " .mysqli_connect_error());
}
if($_GET['q'] == 'classes') {
$query = "SELECT * FROM `assignments`";
}
if($_GET['q'] == 'allContacts') {
$query = "SELECT * FROM `contacts`";
}
$data = array();
$result = mysqli_query($conn, $query);
if(mysqli_num_rows($result) > 0){
while($row = mysqli_fetch_assoc($result)){
$data[] = $row;
}
} else {
echo "0 results";
}
$json = json_encode($data);
echo $json;
角js:
$scope.classes = []
$http.get("sql.php?q=classes")
.then(function(res) {
$scope.classes = res
}, function(err) {
console.log(err)
})
console.log($scope.classes)
下面是这里发生的情况,$http.get in angular是异步搜索含义的,因此当您调用它时,它不会等待响应,而是会前进到代码中的下一条指令,即console.log,因此,这里发生的情况是,当您调用console.log时,它也在调用$scope.class,但尚未收到响应。要进一步了解它,请尝试向console.log添加超时,但这不是正确的方法,您需要了解javascript中的异步调用echo 0结果;另外,您可能需要$scope.classes=res.data。看,我想了。然后是功能{是异步部分。我还在学习。如何使我这里的东西异步工作?响应后执行的then函数是一个回调,就像说从这个人那里给我数据,然后将其传递给用户如果数据被检索,那么将执行该函数并将数据传递给用户。我不能给你一个ny解决方案,因为您甚至没有问题。您只是记录$scope.classes变量。如果您真的想查看var类是否接收数据,您可以将日志放在其中,然后添加超时。因此,正如我所说的,解决方案取决于您将如何使用数据