首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何用角度JS拦截每个Ajax请求

问如何用角度JS拦截每个Ajax请求
EN

Stack Overflow用户
提问于 2015-08-07 14:37:55
回答 3查看 3.5K关注 0票数 2

我需要拦截每个Ajax请求,以验证服务器是否响应了401 Unauthorized,因为会话过期了,并重定向到登录页面,这样用户就不会认为应用程序停止工作了。我可以使用JQuery进行如下操作:

代码语言:javascript
复制
$( document ).ajaxComplete(function( event, xhr, settings ) {
   if(xhr.errorCode == 401 || xhr.responseText === "unauthorized") {
    location.href = "/Login";
   }
});

我怎么能用棱角的JS做这件事?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2015-08-07 15:21:53

可以在应用程序配置()上设置$interceptor

代码语言:javascript
复制
        .config(['$httpProvider', function($httpProvider) {
        $httpProvider.interceptors.push(['$location', '$q',  function($location, $q) {
            return {
                'request': function(request) {    
                    return request;
                },
                'responseError': function(response) {
                    if (response.status === 401) {
                        // do stuff
                    }
                    // otherwise, default behaviour
                    return $q.reject(response);
                }
            };
        }]);
    }])
票数 2
EN

Stack Overflow用户

发布于 2015-08-07 14:47:10

使用httpInterceptor。很类似的问题是不久前的answered。然后,您应该对'response' hanndler感兴趣,并在其中添加您的特定逻辑。

票数 0
EN

Stack Overflow用户

发布于 2015-08-07 14:44:03

创建一个用于进行所有调用的函数,您只需在一个地方处理错误,而不是在多个地方处理错误。

代码语言:javascript
复制
function makeCall(obj, cb) {
    $http({
        method: obj.method,
        url: obj.url,
        data: obj.data || {}
    }, function(res) {
        // non error statuses get handled here
    }, function(res) {
        // error statuses get handled here
    })
}
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31880398

复制
相关文章

相似问题

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