AngularJS ng-repeat未在表格中显示数据

时间:2017-08-09 22:43:04

标签: php mysql angularjs

我的MySQL输出有问题

getCustomers.php

$query="select distinct c.ancestry, c.trusted from members c order by c.id";
$result = $mysqli->query($query) or die($mysqli->error.__LINE__);
$arr = array();
if($result->num_rows > 0) {
while($row = $result->fetch_assoc()) {
    $arr[] = json_encode($row);
}
}

# JSON-encode the response
$json_response = json_encode($arr);
// # Return the response
echo $json_response;

控制器代码:

app.controller('customersCrtl', function ($scope, $http, $timeout) {
$http.get('ajax/getCustomers.php').success(function(data){
    $scope.list = data;
    $scope.currentPage = 1; //current page
    $scope.entryLimit = 100; //max no of items to display in a page
    $scope.filteredItems = $scope.list.length; //Initially for no filter  
    $scope.totalItems = $scope.list.length;
});
$scope.setPage = function(pageNo) {
    $scope.currentPage = pageNo;
};
$scope.filter = function() {
    $timeout(function() { 
    $scope.filteredItems = $scope.filtered.length;
    }, 10);
};
$scope.sort_by = function(predicate) {
    $scope.predicate = predicate;
    $scope.reverse = !$scope.reverse;
};
});

问题是我从MySQL获得这种格式(例如):

["{\"ancestry\":\"12865794218\",\"trusted\":\"128\"}"]

但可以预见的是:

[{"ancestry":"1286794218","trusted":"126"}]

所以,如果我在数据中写入常量,它就可以完美地运行

$scope.list = [{"ancestry":"1286794218","trusted":"126"}];

感谢您的帮助。

3 个答案:

答案 0 :(得分:1)

您对回复进行了双重编码。反斜杠就在那里,因为json_encode的第二个应用程序在第一个应用程序的输出中转义了双引号。从while循环中删除json_encode

if ($result->num_rows > 0) {
    while($row = $result->fetch_assoc()) {
        $arr[] = $row;                        // don't encode here
    }
}

之后只需编码一次(就像你原来那样。)

$json_response = json_encode($arr);

答案 1 :(得分:1)

我认为您需要在PHP代码中使用header('Content-Type: application/json');,以便服务器以JSON内容类型进行响应。

您的json_encode循环内的代码中也存在重复的while,因此您正在执行重复的json编码,因此意外的输出

答案 2 :(得分:0)

在您的回复中使用JSON.parse()。 JSON.parse docs