ajax 遮罩层总是在执行完后显示或显示不出来
在前端ajax代码中,遇到一个问题 :遮罩层(showMask)总是在执行完所有代码后才显示,或着是压根显示不出来; 原来是 异步提交 问题一定要注意
改之前 ajax如下:
if(Is_Login()){
showMask("#mask", ".copy_div");
$.ajax({
type: "post",
async: false,
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");
});
});
}
如下:把 同步提交 改作 异步提交 即可
async:true,
(bug改后再回头来看觉得真的好蠢 )