1. layui.load()在ajax使用时,ajax必须是异步模式,不然layui.load()不起作用。
var loadIndex = '';
$.ajax({
type : 'put',
url : '/equip/servRestart',
beforeSend: function () {
loadIndex = layer.load({
shade: [0.1, '#fff']
});
},
complete: function () {
layer.close(loadIndex);
},
data : {
version : version
},
success : function(data) {
if (data.status = 200) {
....
以上是我截取的部分伪代码,如果我再加上属性async: false;正在加载中的遮罩就显示不了,为了这个问题,也是很是困扰,去掉async(此属性,为异步,默认true,)或async: true遮罩就会生效;
2.
//eg1
var index = layer.load();
//eg2
var index = layer.load(1); //换了种风格
//eg3
var index = layer.load(2, {time: 10*1000}); //又换了种风格,并且设定最长等待10秒
//eg4
var indexLoad = layer.load(2, {shade:[0.5,'#fff']});//页面会有加载层
//关闭
layer.close(index);
layer.close(indexLoad);
3. 如果,您的业务比较耗时,比如重启之类的,还要拿到后台的返回值,这中情况的话,我还没有什么好的解决方法,据说是因为如果同步执行,浏览器的DOM引擎和JS引擎会冲突,导致DOM引擎被阻塞,加载不了;改为异步,又拿不到返回值,会导致代码没有执行的情况,这就比较矛盾了;不过我提供一种权宜的解决方法,如下
var loadIndex = '';
$.ajax({
type : 'put',
url : '/equip/servRestart',
beforeSend: function () {
loadIndex = layer.load({
shade: [0.1, '#242527']
});
},
complete: function () {
layer.close(loadIndex);
},
data : {
version : version
},
success : function(data) {
if (data.status = 200) {
setTimeout("location.reload()", 1000);
layer.msg("服务重启成功!", {
shift : -1,
time : 1000
}, function() {
});
}
}
});
var loadIndex = '';
$.ajax({
type : 'put',
url : '/equip/servRestart',
beforeSend: function () {
loadIndex = layer.load({
shade: [0.1, '#242527']
});
},
complete: function () {
layer.close(loadIndex);
},
data : {
version : version
},
success : function(data) {
if (data.status = 200) {
setTimeout("location.reload()", 1000);
layer.msg("服务重启成功!", {
shift : -1,
time : 1000
}, function() {
});
}
}
});
在ajax成功返回里,加个延时,改变下代码的执行顺序