rainyzz's blog

表单的submit问题

在实际开发中,许多看起来并没有关系的表单问题都出在表单的submit上面,我最近遇到了以下几个问题。

1.提交表单后关闭网页

之前的方法是直接在按钮中添加js语句form1.submit();window.close();,但这样出现的问题就是有的时候后台并没有收到表单提交的数据,因为在submit还没有完成的情况下,窗口关闭,页面中的数据就丢失了,无法提交给后台。

正确的做法是使用ajax提交表单,在回调函数中调用window.close();这样就可以在确保表单提交结束后关闭窗口。

2.同时提交两个表单

之前的方法使用form1.submit();form2.submit();,实际情况中form1提交之后有可能就直接跳转了,根本等不到form2请求完成,所以form2的数据就丢失了,同样,这种情况在服务器上比本机要严重很多,只能使用ajax提交来解决。在SSH中可以第一个表单设为ajax提交,第二个表单设置成为普通的submit,配置struts中的路径跳转。

3.提交表单超时

在另外一个项目中,使用表单的submit来调用action,过一段时间以后该action就会被再调用一次,原因是在IE中在表单submit之后,页面等待5分钟没有反应就会认为是请求超时,然后就会重新发送一次请求,会出现重复的情况,后来改成ajax发送请求后解决。

总之,许多表单的问题都可能与表单的submit有关,解决方法就是尽量使用ajax来提交表单。