Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/76.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
angularjs+php+sql+json=空数组_Php_Sql_Angularjs - Fatal编程技术网

angularjs+php+sql+json=空数组

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:

使用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: " .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类是否接收数据,您可以将日志放在其中,然后添加超时。因此,正如我所说的,解决方案取决于您将如何使用数据