我遇到这种情况:我想在包含Json行的String上使用ng-repeat指令。这个字符串来自休息服务与球衣。当我调用包含此指令的页面时出现错误。我怎么能解决这种情况?谢谢大家。
SyntaxError: Unexpected token {
at Object.parse (native)
at fromJson (https://ajax.googleapis.com/ajax/libs/angularjs/1.2.8/angular.js:1035:14)
at defaults.defaults.transformResponse (https://ajax.googleapis.com/ajax/libs/angularjs/1.2.8/angular.js:6933:18)
at https://ajax.googleapis.com/ajax/libs/angularjs/1.2.8/angular.js:6908:12
at Array.forEach (native)
at forEach (https://ajax.googleapis.com/ajax/libs/angularjs/1.2.8/angular.js:302:11)
at transformData (https://ajax.googleapis.com/ajax/libs/angularjs/1.2.8/angular.js:6907:3)
at transformResponse (https://ajax.googleapis.com/ajax/libs/angularjs/1.2.8/angular.js:7589:17)
at deferred.promise.then.wrappedCallback (https://ajax.googleapis.com/ajax/libs/angularjs/1.2.8/angular.js:10943:81)
at https://ajax.googleapis.com/ajax/libs/angularjs/1.2.8/angular.js:11029:26
}
这是我的代码:
list.html
<tr ng-repeat="person in persons">
<td>{{ person.name }}</td>
<td>{{ person.lastname }}</td>
<td>{{ person.tasks }}</td>
<td>{{ person.skills }}</td>
<td><a ng-click="editUser(person.id)" class="btn btn-small btn-primary">Modifica</a></td>
<td><a ng-click="deleteUser(person.id)" class="btn btn-small btn-danger">Elimina</a></td>
</tr>
services.js
services.factory('PersoneFactory', function ($resource) {
return $resource(baseUrl + '/GestRisorse/rest/person/personList', {}, {
query: { method: 'GET', isArray: false },
})
});
controller.js
app.controller('PersonListCtrl', ['$scope', 'PersoneFactory', 'PersonFactory', '$location',
function ($scope, PersoneFactory, PersonFactory, $location) {
$scope.persons = PersoneFactory.query();
}]);
restController.java
@Path("/person")
public class PersonRestController {
private PersonDAO personDao = new PersonDAO();
@GET
@Path("/personList")
@Produces("application/json")
public String getPersonList() {
return personDao.getAllPerson();
}
...
}
personDao.java
public String getAllPerson(){
DBCollection collection = connection.getCollection("users");
StringBuffer s = new StringBuffer();
DBCursor cursor = collection.find();
try {
while(cursor.hasNext()) {
s.append(cursor.next());
}
} finally {
cursor.close();
}
return s.toString();
}
...
}
答案 0 :(得分:2)
感谢在我的问题下写评论的人,我想说他们发现了问题,那里有2:
1)我没有正确使用承诺,现在我在控制器中添加这些行
PersoneFactory.query().$promise.then(function(data) { $scope.persons = JSON.parse(data); }, function(errResponse) { console.log("errore"); });
2)我没有正确格式化json,所以来自后端的字符串不是一个有效的json。
感谢所有人。