通用ajax

/* ----------------- 通用ajax ----------------- */
/**
 *  ajaxUrl:     ajax的URl
 *  returnData:  ajajx传送的参数
 *  types:       ajajx 类型 默认为post
 *  async:       使用同步的方式, true:为异步方式 false:同步  默认true
 *  isparse:     是否使用 JSON.parse(JSON.stringify())转换 true:使用, false:不使用 默认true
 *  dataType      数据类型 默认json
 *  contentType:  发送信息至服务器时内容编码类型   application/x-www-form-urlencoded 、application/json,默认 application/x-www-form-urlencoded 
 *  showload:     是否显示正在加载图片 默认false
 *  closeLoad:    是否在ajax成功或失败后关闭加载图片 默认true
 *  loadbox:      正在加载在哪个div显示  为空时直接弹出
 *  loadtime:     加载延迟时间 默认320秒
 *  ispage:       是否分页 默认false
 *  pagebox:      分页所在的div
 *  countsData:  分页数据的总数的字段 默认counts
 *  currentPages:当前页数 默认1
 *  linePages:   每页显示的条数 默认20条
 *  showCounts    是否显示分页统计 默认false
 *  disabelBox:  点击后禁用的按钮
 *  success:     成功后的回调函数
 *  erro:        失败后的回调函数
 */
var ajaxFns=function(params,ajaxUrl){
    var defaultParams = {
        returnData:{},
        types:"post",
        async:true,
        isparse:true,
        dataType:"json",
        contentType:"application/x-www-form-urlencoded",
        showload:false, 
        closeLoad:true,
        loadbox:"", 
        loadtime:320, 
        ispage:false,  
        pagebox:"",    
        countsData:"counts",
        currentPages:1,
        linePages:20,
        showCounts:false,
        disabledBox:"",
        success:function(){},
        erro:"",
    };
    var settings = {};
    jQuery.extend(settings,defaultParams,params);

    var returnData=settings.returnData
    var types=settings.types
    var async=settings.async
    var isparse=settings.isparse
    var dataType=settings.dataType
    var contentType=settings.contentType
    var showload=settings.showload 
    var closeLoad=settings.closeLoad
    var loadbox=settings.loadbox
    var loadtime=settings.loadtime 
    var ispage=settings.ispage  
    var pagebox=settings.pagebox  
    var countsData=settings.countsData
    var currentPages=settings.currentPages
    var linePages=settings.linePages
    var showCounts=settings.showCounts
    var disabledBox=settings.disabledBox
    var success=settings.success
    var erro=settings.erro

    

    var ajaxurls=checkNull(ajaxUrl)!=""?ajaxUrl.indexOf("?")>=0?ajaxUrl+"&v1="+Timestamp():ajaxUrl+"?v1="+Timestamp():""; //ajax url
    var isload="true";; //是否正在加载数据
    //s.returnData=typeof(s.returnData)!="object"|| Object.getOwnPropertyNames(s.returnData).length==0?{}:s.returnData;
    var returnDatas=isparse?JSON.parse(JSON.stringify(returnData)):returnData;
    
        /* 显示正在加载 图标 */
        if(showload){
           setTimeout(function(){
                if(isload=="true"){
                    if(loadbox==""){
                        layer.load(0, {
                          shadeClose: false,
                          shade: [0.1,"#333"] //0.1透明度的白色背景
                        }); //0代表加载的风格,支持0-2
                    }else{
                        $(loadbox).html('<span class="loadbox"><p class="layui-layer-content layui-layer-loading0"><i class="layui-icon layui-anim layui-anim-rotate layui-anim-loop">&#xe63d;</i></p></span>')
                    }
                }
            },loadtime)
        }
        disabledBox!=""?$(disabledBox).attr("disabled",true):"";  //禁用点击的按钮
        $.ajax({
            url: ajaxurls,
            data: returnDatas,
            type: types,
            async: async,
            dataType: dataType,
            contentType:contentType, 
            success: function (data) {
            isload="false"; 
            showload && closeLoad?layer.closeAll('loading'):"";
            /* 分页 */
            if(ispage && pagebox!=""){
                /* 判断总数字段值 */
                var countsDatas=0;
                if(countsData.indexOf(".")==-1){
                  countsDatas=checkNull(data[countsData])==""?0:data[countsData];
                }
                if(countsData.indexOf(".")>=0){
                    var countsArry=countsData.split(".");
                    for(var i=0;i<countsArry.length;i++){
                        if(i==0){
                          countsDatas=checkNull(data[countsArry[i]])==""?0:data[countsArry[i]]
                        }else{
                          countsDatas=checkNull(countsDatas[countsArry[i]])==""?0:countsDatas[countsArry[i]]
                        }
                    }
                }
                $(pagebox).pages({
                    counts:countsDatas,
                    linePages:linePages,
                    currentPage:currentPages,
                    showCounts:showCounts,
                })  
            }
            disabledBox!=""?$(disabledBox).attr("disabled",false):"";
            success(data);
              
            },
            erro: function (XMLHttpRequest, textStatus, errorThrown) {
            showload && closeLoad?layer.closeAll('loading'):"";   
            disabledBox!=""?$(disabledBox).attr("disabled",false):"";
            isload="false"; 
            erro();
            }
        });
    }

 

转载于:https://www.cnblogs.com/webqiand/articles/11250352.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值