jquery ajax方法重写


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

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($){

    //备份jquery的ajax方法

    var _ajax=$.ajax;

    

    //重写jquery的ajax方法

    $.ajax=function(opt){

        //备份opt中error和success方法

        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);

 

转自:http://blog.163.com/sunjinke0213@126/blog/static/865568032014428531473/


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM