利用ajaxSubmit()提交表单后,子窗口关闭,父窗口显示查询页面

问题描述:我在父窗口点击添加用户,弹出子窗口页面,在子窗口填写表单后,点击保存,交给后台,后台保存数据,并查询数据库,将所有用户显示在父窗口中。

解决之路:

1.我在表单提交之后加上了这么一句:window.close() ,可是加上这一句之后,表单不提交了。

2.google之后,看到有网友说要等表单提交之后,再关闭,也给出了解决方案:setTimeout(function(){window.close()},1000),可是表单依旧不能提交。

3.这个方案行不通后,我参考了另外一位网友的回答,必须用ajax异步提交表单,可是组织数据是个难题,我那个表单里东西太多了,后来看到了这个

利用ajaxSubmit()提交表单后,子窗口关闭,父窗口显示查询页面_第1张图片

可是后台接收不到数据,我想应该时我的表单的enctype="multipart/form-data"。

4.再坚持坚持,或许就有方案能够解决了,果不其然,让我找到了ajaxSubmit()(至于其用法以及与ajaxForm()的区别用时再google),这时候我再写上window.close()后,表单能提交了,后台数据也能接收了,子窗口也能关闭了,可是父窗口并没有将查询后的结果显示出来,这个时候我测试了一下,我发现当我不添加文件的时候,父窗口是能够将所有用户数据(包含刚才新添加的)显示出来,为什么呢?我依然不明白。哦,对了,最后一点问题是在我添加这么一句迎刃而解:window.opener.location.reload()。

 $("#Form1").ajaxSubmit({
    	type: "POST",
  	url:"system/elecUserAction_save.do",
  	success:function(){
  		window.opener.location.reload();
		window.close(); 
  	   }
       });
我后台用的是struts2
	//保存用户
	public String save() {
		userService.saveUser(user);
		return "save";
	}
struts.xml配置:

elecUserAction_home.do






你可能感兴趣的:(ajax,ajaxSubmit)