【问题标题】:Can't figure out why AngularJS doesn't read JSON from PHP无法弄清楚为什么 AngularJS 不从 PHP 读取 JSON
【发布时间】: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 中打开检查器的脚本页面,但里面有一个断点,然后运行,你可以确切地看到你在使用什么

标签: php angularjs json mysqli


【解决方案1】:

试试$scope.myData = response.data。看起来不像任何records php.ini 中的属性。 then里面可以放 console.log(response.data) 然后在浏览器控制台中查看是什么 实际返回

--charlietfl

确实没有任何“记录”属性,因此删除它可以解决问题。

【讨论】:

    猜你喜欢
    • 2012-05-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多