前端之家收集整理的这篇文章主要介绍了
ajax请求封装,以及异常封装,
前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
var __ajaxcount = 0;
var __topwin = window.top;
var __$jq = __topwin.$;
var __istop = (window == window.top);
//全局 loading提示
$(document).ajaxStart(function() {
__topwin.__startajax();
});
$(document).ajaxStop(function(){
__topwin.__stopajax();
});
$(window).error(function(){
if(jQuery.active>0){
jQuery.active --;
}
__topwin.__stopajax();
});
function __startajax(){
__topwin.__ajaxcount ++;
__$jq("#apploading").css('display','block');
}
function __stopajax(){
__topwin.__ajaxcount --;
if(__topwin.__ajaxcount <= 0){
__topwin.__ajaxcount = 0;
__$jq("#apploading").css('display','none');
}
}
//错误处理
$(document).ajaxError(function( event,jqxhr,settings,thrownError ) {
__topwin.__stopajax();
if(__topwin.__errormsg)return;
var msgwin = null;
/*if(jqxhr.status == 0){
__topwin.__errormsg = true;
msgwin = __$jq.messager.alert('系统提示',"与服务器连接已经断开!",'warning',function(){
__topwin.__errormsg = false;
});
//return;
}*/
if(jqxhr.status == 403){
__topwin.__errormsg = true;
msgwin = __$jq.messager.alert('系统提示',"无法访问,用户权限不足!",function(){
__topwin.__errormsg = false;
});
//return;
}
if(jqxhr.status == 404){
__topwin.__errormsg = true;
var url = (arguments[2] ? arguments[2].url : "");
msgwin = __$jq.messager.alert('系统提示',"访问的资源无效,url:"+url,function(){
__topwin.__errormsg = false;
});
//return;
}
if(jqxhr.status == 10000){
__topwin.__errormsg = true;
msgwin = __$jq.messager.alert('系统提示',"登陆状态过期,请重新登陆!",function(){
__topwin.__errormsg = false;
__topwin.location = "login";
});
//return;
}
if(jqxhr.status == 500){
try{
var msg = $.parseJSON(jqxhr.responseText);
if(msg.msgtype == 1){
__topwin.__errormsg = true;
msgwin = __$jq.messager.alert('系统提示',msg.msg,function(){
__topwin.__errormsg = false;
});
}else{
__topwin.__errormsg = true;
msgwin = __$jq.messager.alert('系统提示','info',function(){
__topwin.__errormsg = false;
});
}
//return;
}catch(ex){}
}
if(msgwin){
var op = msgwin.window("options");
op._close = op.onClose;
op.onClose = function(){
__topwin.__errormsg = false;
op._close();
};
}
});
var app={};
if(__appconfig){$.extend(app,__appconfig);}
app.$ = $;
/**
* 系统中ajax调用此方法,封装头部信息和记录系统ajax状态
*
* @param args
*/
app.ajax = function(args) {
//默认参数
var op ={
beforeSend: function (xhr) {
//if()
/*xhr.setRequestHeader('menuid',menuid);
xhr.setRequestHeader('instanceid',instanceid);
xhr.setRequestHeader('moduleid',moduleid);*/
},contentType: "application/json;charset=utf-8",type: "POST",dataType: "json",async: true,cache: false
};
$.extend(op,args);
if(op.type == "POST" && op.dataType == "json" && op.data)
op.data= JSON.stringify(op.data);
return $.ajax(op);
};