js ajax 请求时loading效果


使用bootstrap做页面时候,基于jQuery Ajax请求时loading效果代码,jQuery loading Ajax遮罩层。


1、首先需要引入jQuery库【你可以自己去jQuery官方下载或者用他们的cdn】

<script src="https://wangshengxian.com/common/js/jquery-3.3.1.min.js"></script>

2、HTML 给个 div块

<div id="loading-mask">
    <div id="loading-spinner"></div>
</div>

<!-- 点击示例 开始 -->
<form class="forms-sample" id="form-data">
    <button type="button" id="submitData" class="btn btn-primary me-2">提交</button>
</form>
<!--点击示例 结束-->

3、添加CSS样式【遮罩层】

<style>
    #loading-mask {
        position: fixed;
        top: 0;
        left: 0;
        width: 100%;
        height: 100%;
        background-color: rgba(0, 0, 0, 0.5);
        z-index: 9999;
        display: none;
    }

    #loading-spinner {
        position: absolute;
        top: 50%;
        left: 50%;
        transform: translate(-50%, -50%);
        width: 50px;
        height: 50px;
        border: 5px solid #fff;
        border-top-color: #888;
        border-radius: 50%;
        animation: spin 1s infinite linear;
    }

    @keyframes spin {
        0% {
            transform: translate(-50%, -50%) rotate(0deg);
        }
        100% {
            transform: translate(-50%, -50%) rotate(360deg);
        }
    }
</style>

4、封装一下JavaScript 显示 隐藏 方法 ,给其他地方如ajax请求时候调用

<script>
    // 显示遮罩层
    function showLoading() {
        $('#loading-mask').show();
    }

    // 隐藏遮罩层
    function hideLoading() {
        $('#loading-mask').hide();
    }
</script>

5、js Ajax请求调用 示例

<script>
    $("#submitData").click(function(){
       
        //序列化获得表单数据,结果为:user_id=12&user_name=John&user_age=20
        // var submitData=decodeURIComponent(data,true);
        //submitData是解码后的表单数据,结果同上
        $.ajax({
            type:"POST",//请求方式
            url:"url",//请求路径
            data:$('#form-data').serialize(),
            cache:false,//false是不缓存,true为缓存
            async:true,//true为异步,false为同步
            // 用于设置响应体的类型 注意 跟 data 参数没关系!!!
            dataType: 'json',
            beforeSend:function(){
                //请求前 打开loading
                showLoading();
            },
            success:function(obj){
                //请求成功
                console.log('success',obj);
            },
            complete:function(obj){
                //请求完成 隐藏loading
                hideLoading();
            },
            error:function(obj){
                //请求失败时
                console.log('error',obj);
                alert("请检查是否自身网络错误,或者是服务器异常了");
            }
        });

        return true; // 阻止默认 form 跳转
    });
</script>


&不带演示完整代码

<!--loading 开始-->
<div id="loading-mask">
    <div id="loading-spinner"></div>
</div>

<style>
    #loading-mask {
        position: fixed;
        top: 0;
        left: 0;
        width: 100%;
        height: 100%;
        background-color: rgba(0, 0, 0, 0.5);
        z-index: 9999;
        display: none;
    }

    #loading-spinner {
        position: absolute;
        top: 50%;
        left: 50%;
        transform: translate(-50%, -50%);
        width: 50px;
        height: 50px;
        border: 5px solid #fff;
        border-top-color: #888;
        border-radius: 50%;
        animation: spin 1s infinite linear;
    }

    @keyframes spin {
        0% {
            transform: translate(-50%, -50%) rotate(0deg);
        }
        100% {
            transform: translate(-50%, -50%) rotate(360deg);
        }
    }
</style>

<script>
    // 显示遮罩层
    function showLoading() {
        $('#loading-mask').show();
    }

    // 隐藏遮罩层
    function hideLoading() {
        $('#loading-mask').hide();
    }
</script>
<!--loading 结束-->


参考文章:
https://blog.51cto.com/u_16175431/7059545

下一篇: jQuery Ajax请求
云天阁
非我而当者,吾师也;是我而当者,吾友也;谄谀我者,吾贼也。
搜索