首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >AngularJS AJAX状态码错误处理

AngularJS AJAX状态码错误处理
EN

Stack Overflow用户
提问于 2016-01-07 03:48:15
回答 1查看 79关注 0票数 0

我有一个拦截器:

代码语言:javascript
复制
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);
            }
        };
    })

常量的定义如下:

代码语言:javascript
复制
angular.module('mobileDashboardApp')
    .constant('HTTPErrors', {
        serverError: 'internal-server-error',
        serviceError: 'service-error'
    })

当出现500时错误时,我如何运行$rootScope.$on来执行console.log?

在我的配置中,我使用以下命令添加了拦截器:

代码语言:javascript
复制
.config(function ($httpProvider, $routeProvider) {
    $httpProvider.interceptors.push([
        '$injector',
        function ($injector) {
            return $injector.get('HTTPInterceptor');
        }
    ]);
EN

回答 1

Stack Overflow用户

发布于 2016-01-07 04:09:53

据我所知,您正在广播一个关于500状态的HTTPErrors.serverError字符串事件和一个关于503状态的HTTPErrors.serviceError字符串事件。因此,您可以通过在想要订阅这些事件的任何控制器上使用此代码来捕获它们

代码语言:javascript
复制
$rootScope.$on(HTTPErrors.serverError, function(event, args){
    console.log("500");
});
$rootScope.$on(HTTPErrors.serviceError, function(event, args){
    console.log("503");
});

当然,您需要将HTTPErrors注入到控制器中。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34641528

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档