Angular不在屏幕上显示json数据 - Angular 1.6.9

时间:2018-04-08 19:36:13

标签: javascript php mysql angularjs json

我有一个php文件,它可以解析json格式的mysql数据 这是我得到的结果,

"{\"records\":[{\"EmpName\":\"Justin\",\"EmpAddress\":\"New York\",
\"emp_email\":\"justin@yahoo.com\"},{\"EmpName\":\"Mark\",\"EmpAddress
\":\"Canada\",\"emp_email\":\"Mark@gmail.com\"},{\"EmpName\":\"Sachin
\",\"EmpAddress\":\"India\",\"emp_email\":\"sachin05@gmail.com
\"},{\"EmpName\":\"Rachel\",\"EmpAddress\":\"Australia\",\"emp_email
\":\"rachel1221@outlook.com\"},{\"EmpName\":\"John\",\"EmpAddress
\":\"Russia\",\"emp_email\":\"john55@yahoo.com\"}]}"

这是我的角度代码

<script>
var app = angular.module('myApp', []);
app.controller('customersCtrl', function($scope, $http) {

        <?php $url = '"' . $url . '/customers_mysql.php"';
        ?>
    console.log(<?php echo $url; ?>);
        $http.get(<?php echo $url; ?>)  
        .then(function(response) {
        console.log("test");
        console.log(response.data); 
        $scope.names = response.data.records;

    });

}); 

这是我的html文件中的控制器

<div ng-app="myApp" ng-controller="customersCtrl">

<table>
  <tr ng-repeat="x in names">
    <td>{{x.EmpName}}</td>
    <td>{{x.EmpAddress}}</td>
      <td>{{x.emp_email}}</td> 
  </tr>
</table>

</div>

我没有看到屏幕上显示任何数据或控制台中显示任何错误消息。我看到json使用console.log(response.data)显示数据正常;它出现在控制台中但角度没有显示在页面上的数据? 知道为什么它不解析数据吗?是因为json面前的记录吗?我试图在json前面删除“records:”但是它也没有显示出来。

修改 这是在我的php文件中将数据从数组解析为json

$outp = "";
while($rs = $result->fetch_array(MYSQLI_ASSOC)) {
    if ($outp != "") {$outp .= ",";}
    $outp .= '{"EmpName":"'  . $rs["EmpName"] . '",';
    $outp .= '"EmpAddress":"'   . $rs["EmpAddress"]        . '",';
    $outp .= '"emp_email":"'. $rs["emp_email"]     . '"}';
}
$outp ='{"records":['.$outp.']}';
$mysqli->close();




echo json_encode($outp);

2 个答案:

答案 0 :(得分:0)

你是对json进行双重编码。 json_encode为你做编码,你只需要填充一个数组。尝试像

这样的东西
$outp = [];
while($rs = $result->fetch_array(MYSQLI_ASSOC)) {
    $outp [] = ["EmpName"=>$rs["EmpName"],
                "EmpAddress" => $rs["EmpAddress"],
                "emp_email" => $rs["emp_email"]];
}

$mysqli->close();
echo json_encode(["records" => $outp]);

答案 1 :(得分:0)

当你应该只是创建一个数组时,你自己在php中创建json字符串。然后你json_encode数组而不是字符串

尝试更改为:

$outp = array("records" => array());

while ($rs = $result - > fetch_array(MYSQLI_ASSOC)) {

  $outp["records"][] = array(
    "EmpName" => $rs["EmpName"],
    "EmpAddress" => $rs["EmpAddress"],
    "emp_email" => $rs["emp_email"]
  );
}

$mysqli - > close();

echo json_encode($outp);