美文网首页
超简单半透明的Ajax加载提示Loader

超简单半透明的Ajax加载提示Loader

作者: YEYU2001 | 来源:发表于2019-03-20 23:56 被阅读0次

当Ajax异步加载或处理数据时,往往页面没有任何的反应,只能等待!如果能够在Ajax开始请求时开始显示加载的图标,当处理完毕后关闭加载的提示,就会更加友好一些!如下图所示:

49.png

下面我们就开始制作加载的图标,主要思路就是:加载图标其实就是一个DIV层,居于页面的中间位置;在没有任何加载时,隐藏不显示;当Ajax处理数据时显示出来,我们这里采用jQuery的淡入淡出效果!



下面我们就来开始制作:

第一步:制作一个加载图标(含CSS样式)

<!-- 加载图标样式 -->
<style>
    .deploy_ctype_tip{z-index:1001;width:100%;text-align:center;position:fixed;top:50%;display:none}
    .deploy_ctype_tip i{position:absolute;color:#45B39D;opacity:0.6;top:-15px;}
</style>
<!-- 设置加载图标 -->
<div id="preloader" class="deploy_ctype_tip"><i class="fa fa-4x fa-spinner fa-spin"></i></div>

第二步:Javascript方法统一淡入淡出提示

在页面加载完成时,该图标处于隐藏状态;这里通过True或者False的参数形式设定。True表示淡入,反之淡出。

// 加载图标的显示与隐藏
function setLoaderIn(isIn){
    //取得对象
    var loader = document.getElementById("preloader");
    if (isIn==true) {
        loader.style.display="";
        $("#preloader").fadeIn(300);
    } else {
        loader.style.display="none";
        $("#preloader").fadeOut(300);
    }
}

第三步:在需要的位置淡入淡出图标

比如下面的示例代码:

/**
 * Ajax动态更新数据并异步刷新页面
 * @Author   DuDongHua
 * @DateTime 2018-04-28T21:21:23+0800
 * @param {对象} Button     表单按钮对象
 * @param {文本} Modal      模块
 * @param {文本} Controller 控制器
 * @param {文本} Action     方法
 * @param {文本} Location   Ajax加载页面的位置id
 * 使用方法:表单对象不用提交的任何设置,提交假按钮<a>设置onclick即可
 * 注意:
 *     1.  在javascript中拼接Thinkphp5的URL地址,不需要"{:url('" + Modal + "/" + Controller + "/" + Page + "')}方法
 *         只需要直接拼接地址即可,如:var MeURL = '/'+Modal+'/'+Controller+'/'+Page;
 */
function EditData(Button,Modal,Controller,Action,Location,Page){
    // 设置默认参数
    var Modal       = arguments[1] ? arguments[1] : "admin";     // 模块名
    var Controller  = arguments[2] ? arguments[2] : "index";     // 控制器
    var Action      = arguments[3] ? arguments[3] : "editData";  // 方法名
    var Location    = arguments[4] ? arguments[4] : "content";   // Ajax加载页面的位置id
    var Page        = arguments[5] ? arguments[5] : "index";     // Ajax加载页面控制器中的方法
    // 生成本页面的url用于更新后异步刷新
    var MeURL = '/'+Modal+'/'+Controller+'/'+Page;
    setLoaderIn(true); //打开加载图标
    // 异步请求数据
    $.ajax({
        url:  '/'+Modal+'/'+Controller+'/'+Action,
        type: 'POST',
        data: $(Button).closest("form").serialize(),  //表单序列化
        dataType: 'json',
        success: function(data){
            // 更新页面并提示
            // window.location.reload(); //当加载整个页面时有效但ajax更新时加载到主页
            loadAjaxHTML(MeURL,Location);
            showMsg(data.msg);
            setLoaderIn(false); //关闭加载图标
            // showTips(data.msg);
        },
        error:function(XMLHttpRequest, textStatus, errorThrown){
            showMsg(XMLHttpRequest.status+" "+XMLHttpRequest.readyState,textStatus,"red","#f60");
        }
    });
}

相关文章

网友评论

      本文标题:超简单半透明的Ajax加载提示Loader

      本文链接:https://www.haomeiwen.com/subject/bqzxvqtx.html