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