我刚开始使用AngularJS并尝试了一个非常基本的例子。该网页包含一个按钮,点击该按钮我从服务器请求json。 但无论何时,只要按下按钮,代码就会执行错误函数中的部分。
HTML文件
<!DOCTYPE html>
<head>
<title> step 4</title>
</head>
<body ng-app="step4App">
<div ng-controller="FriendsCtrl">
<button ng-click="loadFriends()">Load Friends</button>
</div>
<script src="angular.min.js"></script>
<script src="xml2json.js"></script>
<script src = "step4.js"></script>
</body>
</html>
JS
var app = angular.module("step4App",[]);
app.controller("FriendsCtrl", function($scope,$http) {
$scope.loadFriends = function(){
$http({method:'GET',url:'http://localhost:8080/test.jsp', params:{name:"abc",no:"LBF1151638"}}).success(function(data) {
$scope.friends = data;
document.write('<p>two</p>');
document.write(data);
}).error(function() {
alert("error");
});
}
});
截至目前的jsp页面正在返回此json响应。
{"response":{"numFound":0,"start":0,"docs":[]}}
但我无法理解,为什么它总是执行错误功能。
我在浏览器控制台中检查了正在发出请求并收到47byte响应(等于JSON中的字符数)。但它不会打印JSON。
答案 0 :(得分:1)
服务器上可能发生了错误。尝试使用FireFox + Firebug打开页面并检查服务器响应以确保它符合您的期望(检查状态代码和Content-Type响应标头)。
您也可以从命令行运行curl -v http://localhost:8080/test.jsp
。
BTW Angular会在回调中传递额外的参数。尝试提醒他们也看看他们是什么。来自http://docs.angularjs.org/api/ng/service/$http:
$http({method: 'GET', url: '/someUrl'}).
success(function(data, status, headers, config) {
// this callback will be called asynchronously
// when the response is available
}).
error(function(data, status, headers, config) {
// called asynchronously if an error occurs
// or server returns response with an error status.
});