ajax请求封装,以及异常封装

前端之家收集整理的这篇文章主要介绍了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);
};
原文链接:https://www.f2er.com/ajax/163359.html

猜你在找的Ajax相关文章