用layer的iframe层提交表单后,关闭当前的iframe层
今天做了个地图点击地址弹出iframe表单,提交后没有关闭当前弹出的iframe,使用下面的代码parent.layer.close(index);可以实现。

$.ajax({
type: "POST",
url: "/app/userinfo/uploadimg1",
data:form,
datatype:'json',
processData:false,
contentType:false,
success: function(data) {
console.log(data)
var ResData=$.parseJSON(data);
var Jcode=ResData.code;
if(Jcode==0){
layer.msg('图片上传失败', {icon: 2});
layer.closeAll(); //疯狂模式,关闭所有层
}else if(Jcode==1){
layer.msg('图片上传成功', {icon: 1});
var index = parent.layer.getFrameIndex(window.name);
setTimeout(function(){
parent.layer.close(index);//关闭弹出层
parent.location.reload();//更新父级页面(提示:如果需要跳转到其它页面见下文)
}, 2000);
}
},
error: function(XMLHttpRequest, textStatus, errorThrown) {
layer.msg('图片上传失败', {icon: 2});
layer.closeAll(); //疯狂模式,关闭所有层
return false;
}
});如果是在使用iframe的后台使用这个方法会失效,查看console提示Cannot read properties of undefined (reading 'getFrameIndex')
可以简单粗暴的改进如下:
layer.closeAll(); window.location.reload();