我试图用从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;
    });
});

09-25 18:37