我似乎无法解决我在这里做错的事情。我试图从php文件中提取json数据,然后在我的Angular应用程序中显示它。
我的app.js:
var app = angular.module("MyApp", []);
app.controller("ClientHealthCtrl", function($scope, $http) {
$http.get('json.php').
success(function(data, status, headers, config) {
$scope.rows = data;
}).
error(function(data, status, headers, config) {
// log error
});
});
我的HTML:
<body class="skin-black" ng-app="MyApp">
...
<tbody ng-controller="ClientHealthCtrl">
<tr class="link_back" ng-repeat="Computer in rows">
<td><a href="#cid={{Computer.id}}">{{Computer.ComputerName}}</a></td>
<td><i class="fa fa-fw fa-check-square" style="color:#008000;"></i>{{Computer.WmiTest}}</td>
<td><i class="fa fa-fw fa-check-square" style="color:#008000;"></i>{{Computer.SmsClientService}}</td>
<td><i class="fa fa-fw fa-check-square" style="color:#008000;"></i>{{Computer.McAfeeFrameworkService}}</td>
<td><i class="fa fa-fw fa-check-square" style="color:#008000;"></i>{{Computer.RemoteManagement}}</td>
</tr>
</tbody>
导致......
TypeError: Cannot read property 'insertBefore' of null
at https://ajax.googleapis.com/ajax/libs/angularjs/1.0.2/angular.js:2067:13
at forEach (https://ajax.googleapis.com/ajax/libs/angularjs/1.0.2/angular.js:113:18)
at forEach.after (https://ajax.googleapis.com/ajax/libs/angularjs/1.0.2/angular.js:2066:5)
at Object.JQLite.(anonymous function) [as after] (https://ajax.googleapis.com/ajax/libs/angularjs/1.0.2/angular.js:2104:17)
at https://ajax.googleapis.com/ajax/libs/angularjs/1.0.2/angular.js:13294:22
at https://ajax.googleapis.com/ajax/libs/angularjs/1.0.2/angular.js:3745:29
at Object.<anonymous> (https://ajax.googleapis.com/ajax/libs/angularjs/1.0.2/angular.js:13293:13)
at Object.Scope.$digest (https://ajax.googleapis.com/ajax/libs/angularjs/1.0.2/angular.js:7693:38)
at Object.Scope.$apply (https://ajax.googleapis.com/ajax/libs/angularjs/1.0.2/angular.js:7894:24)
at done (https://ajax.googleapis.com/ajax/libs/angularjs/1.0.2/angular.js:8883:20)
enter code here
答案 0 :(得分:6)
尝试将<tr>...</tr>
元素包装在<div>...</div>
。
查看Angular的源代码,它抱怨一些节点没有父节点。
实际上,在我的代码中修复相同的错误时,我发现了你的问题。 这就是我所做的,而且它有效。
答案 1 :(得分:1)
你的堆栈跟踪表明在尝试执行for循环(“at forEach”,“atEach.after”)时会出现问题,并且由于它来自JQLite函数,我会说这是一个基于Angular的循环
查看您提供的代码,我会猜测有问题的循环是您视图中的ng-repeat。这几乎可以肯定意味着您的“计算机”对象为空。
badsyntax与他的评论一致。我会在成功处理程序中添加一些console.log来查看“数据”是什么。您的日志记录在错误处理程序中似乎也有点精简。您是否确信http呼叫正在成功完成?