用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();