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() 
     }; 
    }) 
;