我正在使用 $http
发出一个简单的获取请求.并且失败并显示 503-service unavailable
错误清楚地显示在网络选项卡中。但是 rejection
responseError
中的对象拦截器对象显示status: 0
.
这是我的拦截器
angular.module("app", []).config(function($httpProvider){
$httpProvider.interceptors.push(function($q) {
return {
'responseError': function(rejection) {
console.log(rejection);
}
}
})
});
我正在等待状态代码 503
在拦截器中,但我得到 0
.请帮助我理解并解决问题。
Here是一个说明问题的 fiddle 。
该请求是跨域请求。
最佳答案
您正在使用的服务确实会返回任何数据。 Angular $http 期望返回一些数据,在这种情况下,“GetStatusCode”只是停止并且不返回任何内容。
此外,仅供引用 - 您的 fiddle 不尊重 Angular 绑定(bind)到 Controller 的方法,该方法需要 Controller 名称的字符串。
参见http://plnkr.co/edit/x46D5FIsgaKsaSocYjpz?p=preview为了正确的标记..我们将 Controller 命名为字符串,例如:
angular.module("plunker", [])
.config(function ($httpProvider) {
$httpProvider.interceptors.push(function () {
return {
'responseError': function (rejection) {
console.log('rejection = ', rejection);
},
'response': function (response) {
console.log('response = ', response);
}
}
})
})
.controller('Controller', function Controller($scope, $http) {
$scope.getCode = function () {
var req = 'http://www.reddit.com/r/catpictures.json?limit=50&jsonp=JSON_CALLBACK';
return $http.jsonp(req);
};
$scope.get = function () {
return $scope.getCode()
};
})
;
关于javascript - angularjs拦截器:why is it not receiving the proper status code and message in $http interceptor,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31334988/