AngularJS AJAX状态代码错误处理

时间:2016-01-06 19:48:15

标签: angularjs

我有一个拦截器:

angular.module('mobileDashboardApp')
    .factory('HTTPInterceptor', function ($rootScope, $q, HTTPErrors) {
        return {
            responseError: function (response) {
                $rootScope.$broadcast({
                    500: HTTPErrors.serverError,
                    503: HTTPErrors.serviceError
                }[response.status], response);
                return $q.reject(response);
            }
        };
    })

这里定义了常量:

angular.module('mobileDashboardApp')
    .constant('HTTPErrors', {
        serverError: 'internal-server-error',
        serviceError: 'service-error'
    })

如果出现500错误,如何运行$ rootScope。$ on来执行console.log?

在我的配置中,我使用:

添加了拦截器
.config(function ($httpProvider, $routeProvider) {
    $httpProvider.interceptors.push([
        '$injector',
        function ($injector) {
            return $injector.get('HTTPInterceptor');
        }
    ]);

1 个答案:

答案 0 :(得分:0)

根据我的理解,您正在500状态上广播HTTPErrors.serverError字符串事件,并在503状态上广播HTTPErrors.serviceError字符串事件。因此,您可以通过将此代码放在您想要订阅这些事件的控制器上来捕获它们

$rootScope.$on(HTTPErrors.serverError, function(event, args){
    console.log("500");
});
$rootScope.$on(HTTPErrors.serviceError, function(event, args){
    console.log("503");
});

当然你需要将HTTPErrors注入该控制器。