我试图用从PHP数据库中获取的数据填充javascript中的数组。我遇到问题,因为数组未循环通过,运行查询后似乎为空。
这是我的代码:
的PHP
public function getAllFavorites() {
$json = array();
$query = $this -> db -> get("favorites");
$count = $query -> num_rows();
foreach ($query -> result() as $row) {
array_push($json, $row -> product_id);
}
echo json_encode($json);
}
JAVASCRIPT
app.controller("MainController", function($scope, $http){
$scope.favorites = getAllFavorites();
});
var getAllFavorites = function() {
$.get("/home/getAllFavoriteIds", function(response){
return response;
});
}
的HTML
<div ng-controller="MainController">
<ul>
<li ng-repeat="favorite in favorites">{{favorite}}</li>
</ul>
</div>
我要做的就是用PHP返回的数组填充$ scope.favorites,然后使用ng-repeat循环遍历。
最佳答案
您的JS有问题。您的代码期望从getAllFavorites()
同步返回数据,但是该函数不返回任何内容。使用$ http拨打电话,它将给您一个诺言。您可以使用该承诺在客户端获取数据时做出响应。
app.controller("MainController", function($scope, $http){
var getAllFavorites = function() {
return $http.get("/home/getAllFavoriteIds"); // This should really be done in a service
};
getAllFavorites().then(function(response){
$scope.favorites = response.data;
});
});