我有一个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);
答案 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);