jquery ajax方法重写,利用statusCode对象根据服务器返回的不同状态进行处理

10 篇文章 0 订阅

1.服务端先根据request头部信息里是否有"x-requested-with"来判断是否是异步请求,然后利用response对象,向客户端返回status状态,注意在异步情况下,设置status等信息后不能再调用sendRedirect方法,否则之前设置的信息会被要跳转的页面信息覆盖,导致客户端里取不到status和其他设置信息。

String isAjaxRequest = request.getHeader("x-requested-with");

    if(isAjaxRequest!=null){

        response.setStatus(900);

    }else {

        request.setAttribute("type""noAuthority");

        response.sendRedirect(request.getContextPath()+"/show_msg.jsp?type=noAuthority");

    }

2.重写jquery ajax请求方法

//重写jquery ajax请求方法,添加对异步请求重定向处理

(function($){

    //备份jqueryajax方法

    var _ajax=$.ajax;

    

    //重写jqueryajax方法

    $.ajax=function(opt){

        //备份opterrorsuccess方法

        var fn = {

            error:function(XMLHttpRequest, textStatus, errorThrown){},

            success:function(data, textStatus){}

        }

        if(opt.error){

            fn.error=opt.error;

        }

        if(opt.success){

            fn.success=opt.success;

        }

        

        //扩展增强处理

        var _opt = $.extend(opt,{

            error:function(XMLHttpRequest, textStatus, errorThrown){

                //错误方法增强处理

                fn.error(XMLHttpRequest, textStatus, errorThrown);

            },

            success:function(data, textStatus,xhr){

                //成功回调方法增强处理

                fn.success(data, textStatus);

            },

            statusCode: {//传入statusCode对象,定义对状态码操作的方法

             900 : function() {//900为服务器返回的自定义状态码,说明当前操作没有权限

                 alert("您没有权限进行此项操作,请联系管理员!");

                   return;

         }

            }

        });

        _ajax(_opt);

    };

})(jQuery);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值