我正在使用Struts2的angularjs。 我能够将来自angularjs的请求发送到Struts2动作类并在那里获取json对象并在响应对象中设置json,但是在angularjs中检索json时在浏览器控制台中获取无效字符错误并且在调试中获取未定义的响应宾语。以下是相同的代码: -
angularModule.controller('ResultDatabaseCtrl',function($scope,$http){
$http.get('/url/test').then(function(response)
{
$scope.data=response;
})
});
在Struts2操作中,我正在编写以下代码:
public String Test() throws ServletException {
response.setContentType("text/json");
response.setHeader("Cache-Control","no-cache");
try {
aggOutput = Delegator.getInstance().processRequest(aggInput);
response.getWriter().write((String) aggOutput.getValueObject());
} catch(Exception e) {
e.printStackTrace();
}
return null;
}
此处aggOutput.getValueObject
的JSON代码格式如下:
{ identifier: "id",items: [ { id:"1", name:"ABC", Age:12 },
{ id:"1", name:"PQR", Age:2 }]}
在浏览器和控制台中调试时,从控制器获取响应的angularjs中的数据是未定义的,但得到以下错误: -
SyntaxError: Invalid character
at uc (http://ajax.googleapis.com/ajax/libs/angularjs/1.4.8/angular.min.js:15:466)
at $b (http://ajax.googleapis.com/ajax/libs/angularjs/1.4.8/angular.min.js:82:358)
at Anonymous function (http://ajax.googleapis.com/ajax/libs/angularjs/1.4.8/angular.min.js:83:272)
at n (http://ajax.googleapis.com/ajax/libs/angularjs/1.4.8/angular.min.js:7:331)
答案 0 :(得分:1)
感谢大家的帮助..导致问题的JSON格式以及数据双引号都在那里。纠正后问题得到解决。
答案 1 :(得分:0)
尝试将回复Content-Type
更改为application/json
的{{1}}。
答案 2 :(得分:0)
而且,
angularModule.controller('ResultDatabaseCtrl', ['$scope', '$http', function($scope,$http){
$http.get('/url/test').then(function(response)
{
$scope.data=response;
})
}]);
您需要注入依赖项,但这可能不是导致错误本身的原因。
答案 3 :(得分:0)
尝试在代码中添加错误功能。这将在响应中捕获确切的错误消息。
angularModule.controller('ResultDatabaseCtrl',function($scope,$http){
$http.get('/url/test')
.then(function (response) {
console.log(JSON.sringify(response));
function(error) {console.log(JSON.sringify(error));}
);
});