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/