使用Layer弹出iframe表单窗口,有几率无法成功提交表单问题解决

1.需求分析:使用Layer将表单放到iframe中弹出,点击弹窗中表单页面的使用button标签写的提交按钮(非input指定type为submit的那个提交按钮)提交表单,然后关闭窗口,父页面显示操作成功消息。

2. 表单

<form id="dbForm" action="${pageContext.request.contextPath }/create_database" method="post">
	Database Name:<input type="text" name="dbName"/><br/><br/>
	Owner:<input type="text" name="owner"/><br/><br/>
	Database charset:<input type="text" name="dbCharset"/><br/><br/>
	TimeZone:<input type="text" name="timeZone"/><br/><br/>
</form>
<button id="createDatabase">创建</button>    
<button id="cancel">取消</button>
3. 有问题的实现方式:

var index = parent.layer.getFrameIndex(window.name);
$("#createDatabase").click(function(){
	$("#dbForm").submit();
			
	parent.layer.msg("数据库创建成功了");
	parent.layer.close(index);
});
上述实现方式,有几率会导致表单不能提交,Chrome调试工具中都监测不到请求的发送。网上查了一些资料,

原因是:js里边代码的执行顺序并不一定是按照代码的顺序执行的1不能直接在按钮的点击事件里执行submit()之后

执行关闭操作。(参照博客:点击打开链接

4. 可以的实现方式:

var index = parent.layer.getFrameIndex(window.name);
$("#createDatabase").click(function(){
	var url = $("#dbForm").attr("action");
	var param = $("#dbForm").serialize();//序列化表单值,创建 URL 编码文本字符串。
	$.post(url,param,function(data){
	        parent.layer.msg("数据库创建成功了");
		parent.layer.close(index);
	},"json");
			
});
直接一定是先发送ajax请求,在浏览器接受到服务器响应之后,进行判断后台添加操作是否成功后,再打印消息,关

闭子窗口。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
layer.openlayui框架中的一个方法,用于打开一个弹出层。在引用\[2\]中的代码示例中,layer.open被用于打开一个iframe形式的弹出层,弹出层中包含一个表单。通过设置content属性为表单所在的页面的URL,可以在弹出层中显示表单。同时,可以通过success回调函数来初始化表单的值,例如给表单的各个字段赋初始值。在示例中,通过body.find(".xxx").val(xxx)的方式,将需要修改的每个字段的值传递给表单。这样,当弹出打开时,表单中的字段就会显示对应的初始值。用户可以通过修改表单中的值来提交到后台并更新页面表格数据。 #### 引用[.reference_title] - *1* *3* [关于layer.open弹出表单初始化和表单提交更新表格的问题](https://blog.csdn.net/wyp_comeon/article/details/81566301)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down28v1,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [layer.open() 【type=2 】的iframe页面的form表单提交和更新父级表单](https://blog.csdn.net/weixin_41128842/article/details/103472472)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down28v1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值