最近在写ajax请求后台来过程中layer等待层的功能时遇到layer的加载框总是在请求完后才出现的问题。
后来找到原因是因为ajax请求设置为同步的,由于js是单线程的导致程序先执行了后台请求然后请求完后才能够执行到beforeSend方法导致的。
js阻塞问题
后续把ajax改为异步请求则成功了。
function initpure(){
var index;
$.ajax({
url: ctx + '/kit/dba.do',
type: "POST",
async: true,//此处要求是异步的,否则showLoad()出不来。
dataType: "json",
data: {method: 'initpure'},
beforeSend:function(){
index = LayerTool.showLoad();
},
complete:function(){
LayerTool.closeLayer(index);
},
success: function (data) {
if("success" == data.result){
LayerTool.alert("恭喜:成功初始化纯净框架!");
}else{
LayerTool.alert("抱歉:初始化异常,请检查配置是否正确!");
}
}
});
}