对jQuery ajax请求成功(失败)回调执行前的统一处理

目前的项目中有这样的需求,如果用户的状态因已登录太久已经失效(登录超时,用户自己不知道),用户在操作发起一个ajax请求的时候服务端是无法返回有效数据的,而ajax请求的状态还是成功,会执行配置项里的success函数参数或者done的异步回调。这时需要我们在请求成功后判断用户是否已经登录超时,在每一个ajax的成功回调里加是不现实的的,我们需要做统一处理。 如果我们能够截获到所返回的data数据,然后判断其某个属性值是否是超时状态值即可,如果是则可以跳转到登陆页(这里我们让请求数据里面返回超时状态 code:10)。代码如下:

var ajax = $.ajax;        
$.ajax = function (opt) {            
    //备份opt中error和success方法            
    var fn = {                
        success: function (data, textStatus, jqXHR) { 

        }
    }            
    if (opt.success) {                
        fn.success = opt.success;            
    }
    //扩展增强处理            
    var _opt = $.extend(opt, {                
        success: function (data, textStatus, jqXHR) {                    
            //重写success事件'                  
            if (data.code == '10') { //截获请求数据  如果code=10 页面跳转到登录界面                       
                location.href = 'login.html';                        
                return;                    
            }                    
            fn.success(data, textStatus, jqXHR);                
        }            
    });            
    var def = ajax.call($, _opt);                                                                                                                             
    // 兼容不支持异步回调的版本            
    if('done' in def){                
        var done = def.done;                
        def.done = function (func) {                    
            function _done(data) {                        
                if (data.code == '10') {//截获请求数据  如果code=10 页面跳转到登录界面                           
                    location.href = 'login.html';                            
                    return;                        
                }                        
                func(data);                    
            }                    
            done.call(def, _done);                    
            return def;                
        };            
    }            
    return def;        
};
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值