当前位置: 首页 > 面试题库 >

AngularJS的全局Ajax错误处理程序

酆英达
2023-03-14
问题内容

当我的网站是100%jQuery时,我曾经这样做:

$.ajaxSetup({
    global: true,
    error: function(xhr, status, err) {
        if (xhr.status == 401) {
           window.location = "./index.html";
        }
    }
});

为401错误设置全局处理程序。现在,我将angularjs$resource$http一起使用,以向服务器发送(REST)请求。有什么办法可以类似地用角度设置全局错误处理程序吗?


问题答案:

我还在建立一个带有angular的网站,并且遇到了同样的障碍来处理全局401。当我遇到此博客文章时,我最终使用了HTTP拦截器。也许您会发现它和我一样有用。

“基于AngularJS(或类似)的应用程序中的身份验证。” , espeo软件

编辑:最终解决方案

angular.module('myApp', ['myApp.filters', 'myApp.services', 'myApp.directives'], function ($routeProvider, $locationProvider, $httpProvider) {

    var interceptor = ['$rootScope', '$q', function (scope, $q) {

        function success(response) {
            return response;
        }

        function error(response) {
            var status = response.status;

            if (status == 401) {
                window.location = "./index.html";
                return;
            }
            // otherwise
            return $q.reject(response);

        }

        return function (promise) {
            return promise.then(success, error);
        }

    }];
    $httpProvider.responseInterceptors.push(interceptor);


 类似资料:
  • 问题内容: 我想全局拦截某些错误情况,以防止控制器自己处理错误。我认为我需要HTTP拦截器,但是我不确定如何从我的控制器中处理错误。 我有一个像这样的控制器: 和这样的HTTP拦截器: 这与浏览器重定向到“ /错误”路径一样有效。但在承诺抓的 也 执行了,我不希望这样。 我知道我可以编写代码,使其忽略404错误,但这是无法维护的。假设我进行修改以同时处理500个错误,那么我将不得不再次进行修改(以

  • 问题内容: 有没有一种方法可以添加一个全局包罗万象的错误处理程序,可以在其中将响应更改为通用JSON响应? 我无法使用该信号,因为它不允许修改响应(http://flask.pocoo.org/docs/0.10/signals/)。 相反,所有信号处理程序均以未定义的顺序执行,并且不修改任何数据。 我宁愿不要包装该函数,因为感觉就像是内部API。我想我正在寻找类似的东西: 请注意,不会接受任何参

  • 我正在使用Apollo与用React编写的Web应用程序中的GraphQL服务器进行交互。我试图在应用程序中实现错误处理,并依赖于apollo-link-error。 现在,我需要处理两类错误: 可以在执行Apollo查询或变异的组件中本地处理的错误,即需要在其上显示上下文错误信息的无效表单字段 可以全局处理的错误,例如,通过在页面的某个位置显示toast通知来显示错误详细信息 显然,一旦错误在本

  • 问题内容: 分支出类似这样的问题,我希望包装jQuery的$.ajax()方法,以便可以在一个位置提供错误处理,然后该错误将由应用程序的所有远程调用自动使用。 简单的方法是简单地创建一个新名称,类似于$ .get()和$ .post()如何将外观实现为$ .ajax()。但是,我希望重用名称$.ajax(),以便我们可以使用标准jQuery语法保留其余代码,而隐藏了我们添加了自己的错误处理的事实。

  • 我正在尝试为我的骆驼上下文中的所有路由抛出的所有异常配置一个异常处理程序。我的做法是这样的,没有运气: 实例化默认骆驼上下文 从spring上下文检索RouteDefinition列表 通过调用CTX.AddRouteDefinitions()将这些定义添加到camel上下文 从java dsl定义的RotueBuilder添加我的异常处理程序路由(ctx.addRoutes(new MyErro

  • 我使用spring-boot-starter-amqp1.4.2.Producer和消费者工作正常,但有时传入的JSON消息语法不正确。这会导致以下(正确)异常: 未来我可能会面临更多的例外。因此,我想配置一个全局错误处理程序,这样,如果任何一个消费者中存在任何异常,我就可以全局处理它。 注意:在这种情况下,消息根本没有到达消费者。我想在消费者中全局处理这类异常。 请找到以下代码: RabbitC