当我们用到layer.msg()和parent.location.reload()刷新的时候,会发现layer.msg不会弹出提示信息,那这种情况我们要怎么操作呢?
我们原来的代码如下(会发现执行后不会提示数据保存成功或者失败):
$.post({
url:"/save",
data:data.field,
success:function (data){
if (data.code == "001"){
layer.msg("数据保存成功!",{icon:6,time:1000});
}else{
layer.msg("数据保存失败!",{icon:5,time:1000});
}
// 关闭弹出层
layer.close(index);
// var iframeIndex = parent.layer.getFrameIndex(window.name);
// 关闭后刷新父页面
parent.location.reload();
// parent.layer.close(iframeIndex);
}
})
我们将代码进行修改,如果在 $.post() 请求成功后调用 parent.location.reload() 导致 layer.msg() 不显示,您可以考虑将刷新父页面的代码放在 layer.msg() 的回调函数中,例如: :
$.post({
url: "/admin/user/save",
data: data.field,
success: function (data) {
if (data.code == "001") {
layer.msg("数据保存成功!", { icon: 6, time: 1000 }, function () {
// 关闭弹出层
layer.close(index);
// 刷新父页面
parent.location.reload();
});
} else {
layer.msg("数据保存失败!", { icon: 5, time: 1000 }, function () {
// 关闭弹出层
layer.close(index);
});
}
}
});
这样,在弹出框关闭后再刷新父页面,就可以确保 layer.msg() 能够正常显示了。同时,您可以在 layer.msg() 的回调函数中添加其他代码,以确保它们在消息提示完成后再执行。