ajax 遮罩层总是在执行完后显示或显示不出来

在前端ajax代码中,遇到一个问题 :遮罩层(showMask)总是在执行完所有代码后才显示,或着是压根显示不出来; 原来是 异步提交 问题一定要注意

改之前 ajax如下:

            if(Is_Login()){
                   showMask("#mask", ".copy_div");
                   $.ajax({
                        type: "post",
                        async: true, 
                        url: url_98 + "FileServlet.do",
                        xhrFields: {
                            withCredentials: true
                        },
                        crossDomain: true,
                        data: {
                            "method":"cmpPrint",
                            "yydh": yydh,
                            "copy": "1" 
                        }
                   }).done(function (data) {
                        closeMask("#mask",".copy_div");
                        console.log("cmpPrint:" + data);  
                        var json = JSON.parse(data);
                        //*********获取地址
                        copyPDF = json.path; //pdf地址 
                        var aux = document.createElement("input"); 
                        aux.setAttribute("value", copyPDF); 
                        document.body.appendChild(aux); 
                        aux.select();
                        document.execCommand("copy"); 
                        document.body.removeChild(aux);    
                        Toast("复制成功", 3000);                    
                        //alert("复制成功!");
                        //*********获取地址
                        if(json.status == "ok"){
                            //阻止事件冒泡
                            stopBubble(event);
                        }else{
                            Toast("系统错误,请联系管理员", 3000);
                            stopBubble(event);
                        }
                        
                    }).fail(function (data) {
                        closeMask("#mask", ".loginLoad");
                        showMask("#mask", ".errorDiv");
                        $(".errorDiv>p").text("抱歉,服务器错误");
                        $(".alertImg").attr("src", "images/alert.png");
                        //点击提示框关闭按钮
                        $(".closeBtn").click(function () {
                            //关闭遮罩层和提示框
                            closeMask("#mask", ".errorDiv");
                            closeMask("#mask", ".loginLoad");
                        });
                   });
            }

 

把 同步提交 改作 异步提交 即可。

ajax 遮罩层总是在执行完后显示或显示不出来

上一篇:BS+JQ+Node.js实现本地通讯录


下一篇:WebRTC源码分析--RateTracker