1

我正在使用$http。而且它不能与在网络选项卡上清楚地显示。但rejection对象503-service unavailable错误简单的GET请求$ HTTP拦截正确的状态码和消息在responseError拦截器对象显示status: 0angularjs拦截:为什么不接受

这里是我的拦截

angular.module("app", []).config(function($httpProvider){ 
$httpProvider.interceptors.push(function($q) { 
    return { 
    'responseError': function(rejection) { 
     console.log(rejection); 
    } 
    } 
}) 
}); 

我期待的状态代码503在拦截器,但我得到0。请帮助我了解和解决问题。

Here是一个演示问题的小提琴。

该请求是一个跨域请求。

+1

你吃过看看http://stackoverflow.com/questions/28257824/impossible-to -capture-503-even-with-angularjs-http-interceptor?看起来它与您运行代码的环境有关。 –

+0

@MattHerbstritt这是我正在处理的同一问题,除了小提琴不工作而不考虑环境。 –

回答

1

您正在使用的服务确实会返回任何数据。 Angular $ http需要返回一些数据,在这种情况下,“GetStatusCode”只是停止并且不返回任何内容。

另外,fyi - 你的小提琴不尊重角度的绑定到控制器的方法,该控制器需要控制器名称的字符串。

适当标记..在这里我们命名控制器作为一个字符串见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() 
     }; 
    }) 
;