define(function(require, exports, module) { var $ = require('$'); //是否已经弹出小窗口 var isToLogin=false; //备份jquery的ajax方法 var _ajax = $.ajax; //重写jquery的ajax方法 $.ajax=function(opt){ //备份opt中error和success方法 var fn = { error:function(XMLHttpRequest, textStatus, errorThrown){}, success:function(data, textStatus){}, complete: function(XMLHttpRequest, textStatus,responseText){} } if(opt.error){ fn.error=opt.error; } if(opt.success){ fn.success=opt.success; } if(opt.complete){ fn.complete=opt.complete; } //扩展增强处理 var _opt = $.extend(opt,{ complete:function(XMLHttpRequest, textStatus,responseText){ //完成方法增强处理 // fn.complete(XMLHttpRequest, textStatus); interceptorCompleteLogin(XMLHttpRequest, textStatus,fn); }, error:function(XMLHttpRequest, textStatus){ //错误方法增强处理 fn.error(XMLHttpRequest, textStatus); }, success:function(data, textStatus){ interceptorSuccessLogin(data,textStatus,fn); } }); _ajax(_opt); }; //成功拦截登录 function interceptorSuccessLogin(data,textStatus,fn){ //成功回调方法增强处理 if(data){ if(isJson(data)||isArray(data)){ if(data.smallwin_flag&&data.ajaxFlag){ if(data.smallwin_flag=="Y"&&data.ajaxFlag=="Y"){ module.constructor.prototype.paramsStr=data.paramsStr; module.constructor.prototype.datatype_flag=data.datatype_flag; module.constructor.prototype.request_method=data.request_method; module.constructor.prototype.redirect_url=data.redirect_url; module.constructor.prototype.callback_success=function(calldata, textStatus){ if(module.datatype_flag=="json"){ if(isJson(calldata)){ fn.success(calldata, textStatus); }else{ calldata = eval('(' + calldata + ')'); fn.success(calldata, textStatus); } }else if(module.datatype_flag="html"){ fn.success(calldata, textStatus); } } module.constructor.prototype.callback_error=function(XMLHttpRequest,code_flag){ fn.error(XMLHttpRequest, code_flag); } toLogin(data.jsessionid);//弹出小窗口 isToLogin=true; } }else{ fn.success(data, textStatus); } }else{//处理非json数据,也是区分load try{ data = eval('(' + data + ')'); if(data.smallwin_flag&&data.ajaxFlag){ if(data.smallwin_flag=="Y"&&data.ajaxFlag=="Y"){ module.constructor.prototype.paramsStr=data.paramsStr; module.constructor.prototype.datatype_flag=data.datatype_flag; module.constructor.prototype.request_method=data.request_method; module.constructor.prototype.redirect_url=data.redirect_url; module.constructor.prototype.callback_success=function(calldata, textStatus){ if(module.datatype_flag=="json"){ if(isJson(calldata)){ fn.success(calldata, textStatus); }else{ calldata = eval('(' + calldata + ')'); fn.success(calldata, textStatus); } }else if(module.datatype_flag="html"){ fn.success(calldata, textStatus); } } module.constructor.prototype.callback_error=function(XMLHttpRequest,code_flag){ fn.error(XMLHttpRequest, code_flag); } toLogin(data.jsessionid);//弹出小窗口 isToLogin=true; } }else{ fn.success(data, textStatus); } }catch(e){ fn.success(data, textStatus); } } } } //完成拦截登录 function interceptorCompleteLogin(XMLHttpRequest, textStatus,fn){ //成功回调方法增强处理3 var data=XMLHttpRequest.responseText; if(data){ if(isJson(data)||isArray(data)){ if(data.smallwin_flag&&data.ajaxFlag){ if(data.smallwin_flag=="Y"&&data.ajaxFlag=="Y"){ module.constructor.prototype.paramsStr=data.paramsStr; module.constructor.prototype.datatype_flag=data.datatype_flag; module.constructor.prototype.request_method=data.request_method; module.constructor.prototype.redirect_url=data.redirect_url; module.constructor.prototype.callback_complete=function(XMLHttpRequest, textStatus,responseText){ fn.complete(XMLHttpRequest, textStatus,responseText); } if(!isToLogin){ toLogin(data.jsessionid);//弹出小窗口 } } }else{ fn.complete(XMLHttpRequest, textStatus); } }else{//处理非json数据,也是区分load try{ data = eval('(' + data + ')'); if(data.smallwin_flag&&data.ajaxFlag){ if(data.smallwin_flag=="Y"&&data.ajaxFlag=="Y"){ module.constructor.prototype.paramsStr=data.paramsStr; module.constructor.prototype.datatype_flag=data.datatype_flag; module.constructor.prototype.request_method=data.request_method; module.constructor.prototype.redirect_url=data.redirect_url; module.constructor.prototype.callback_complete=function(XMLHttpRequest, textStatus,responseText){ fn.complete(XMLHttpRequest, textStatus,responseText); } if(!isToLogin){ toLogin(data.jsessionid);//弹出小窗口 } } }else{ fn.complete(XMLHttpRequest, textStatus); } }catch(e){ fn.complete(XMLHttpRequest, textStatus); } } } } /***** 判断是否为json对象 ******* * @param obj: 对象(可以是jq取到对象) * @return isjson: 是否是json对象 true/false */ function isJson(obj){ var isjson = typeof(obj) == "object" && Object.prototype.toString.call(obj).toLowerCase() == "[object object]" && !obj.length; return isjson; } function isArray(obj){ var isjson = typeof(obj) == "object" && Object.prototype.toString.call(obj).toLowerCase() == "[object array]"; return isjson; } return $; });
小窗口登录对于jquery—ajax重写
猜你喜欢
转载自blog.csdn.net/a137268431/article/details/44021217
今日推荐
周排行