angularjs拦截器:为啥在$http拦截器中没有收到正确的状态码和消息
Posted
技术标签:
【中文标题】angularjs拦截器:为啥在$http拦截器中没有收到正确的状态码和消息【英文标题】:angularjs Interceptor:why is it not receiving the proper status code and message in $http interceptorangularjs拦截器:为什么在$http拦截器中没有收到正确的状态码和消息 【发布时间】:2015-09-28 20:40:47 【问题描述】:我正在使用$http
发出一个简单的get 请求。它失败并出现503-service unavailable
错误,这清楚地显示在网络选项卡中。但是responseError
拦截器对象中的rejection
对象显示status: 0
。
这是我的拦截器
angular.module("app", []).config(function($httpProvider)
$httpProvider.interceptors.push(function($q)
return
'responseError': function(rejection)
console.log(rejection);
)
);
我期待拦截器中的状态代码503
,但我收到0
。请帮助我理解并解决问题。
Here 是一个说明问题的小提琴。
请求是跨域请求。
【问题讨论】:
你看过***.com/questions/28257824/… 吗?看起来它与您运行代码的环境有关。 @MattHerbstritt 这与我正在处理的问题相同,只是无论环境如何,小提琴都不起作用。 【参考方案1】:您使用的服务确实会返回任何数据。 Angular $http 期望返回一些数据,在这种情况下,“GetStatusCode”只是停止并且不返回任何内容。
另外,仅供参考 - 您的小提琴不尊重 angular 绑定到控制器的方法,它需要一个字符串作为控制器名称。
请参阅http://plnkr.co/edit/x46D5FIsgaKsaSocYjpz?p=preview 以获得正确的标记。我们将控制器命名为字符串,例如:
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()
;
)
;
【讨论】:
以上是关于angularjs拦截器:为啥在$http拦截器中没有收到正确的状态码和消息的主要内容,如果未能解决你的问题,请参考以下文章