【发布时间】:2016-02-08 19:26:29
【问题描述】:
我花了几个小时试图弄清楚这一点并浏览网页,但我一定是做错了什么。每次我加载页面它只是空白。 我正在尝试将数据库从 mysqli 加载到 angularjs。 代码完全是从 W3 练习中复制的,所以我不知道问题出在哪里。
dbaseread.php 与 html 位于同一文件夹中。
PHP:
$query = "SELECT * FROM members";
$result = $mysqli->query($query);
$r = array();
if( $result->num_rows>0){
while($row = $result->fetch_assoc()){
$r[] = $row;
}
}
$res = json_encode($r);
header('Content-Type: application/json');
echo $res;
HTML
<!DOCTYPE html>
<html>
<script src="http://ajax.googleapis.com/ajax/libs/angularjs/1.4.8/angular.min.js"></script>
<body>
<div ng-app="myApp" ng-controller="customersCtrl">
<ul>
<li ng-repeat="x in myData">
{{ x.name }}
</li>
</ul>
</div>
<script>
var app = angular.module('myApp', []);
app.controller('customersCtrl', function($scope, $http) {
$http.get("dbaseread.php").then(function (response) {
$scope.myData = response.data.records;
});
});
</script>
</body>
</html>
【问题讨论】:
-
在使用之前尝试解码响应...我知道听起来很奇怪,请尝试一下... json_decode($response, true);过去几天我一直在处理 json 文件,除非我先对其进行解码并使用 true 参数,否则我的 JS 拒绝读取它
-
试试
$scope.myData = response.data。看起来不像 php.ini 中的任何records属性。在then里面可以放console.log(response.data)然后在浏览器控制台中查看实际返回的内容 -
@silverpenguin 用于解码,而非编码
-
@charlietfl 哦,非常感谢,解决了!我不敢相信这是一个如此愚蠢的错误
-
对于未来,这正是调试器的用途。在 chrome 中打开检查器的脚本页面,但里面有一个断点,然后运行,你可以确切地看到你在使用什么