在登出某人之前如何提交包含数据的表单?
时间:2020-03-06 14:47:16 来源:igfitidea点击:
我正在将document.form.submit()函数用于相当大的输入表单(数百个字段,这是一个清单应用程序)。我在用户闲置了一段时间后调用此命令,我想保存他们键入的任何数据。当我尝试此操作时,页面将重新加载(操作为#),但在字段中键入的任何新文本都不会在REQUEST中传递,因此我无法将其放入数据库中。是否有某些根本原因导致这种情况发生,或者我的代码不能很好地配合使用(我正在使用EXTJS网格视图来显示表单和用于跟踪空闲时间的库)?
谢谢,
罗伯特
解决方案
服务器可能会舍弃输入值。假设服务器上的页面如下所示:
<form action="/page.cgi"> ... <input name="Fieldx" value=""/> </form>
我认为它将使该领域无效。或者此服务器操作可能是间接设置它。在JSF中,是这样的。
<input name="Fieldx" value="#{bean.nullProperty}"/>
我们在服务器上拥有什么,浏览器是什么?
我将尝试捕获HTML发布请求,以查看是否包含输入字段。如果它们是服务器有问题。
但是关于我们所说的,我认为这是因为浏览器处理JavaScript DOM的方式存在冲突。如果我们在表单上省略了"提交"按钮,则可能会出现这种情况。
我想我把答案放在这里了。我发现这样做是:
setTimeout('frm.submit();',2000);
导致页面重新加载,但未提交表单。当我这样做时:
frm.submit();
表单已提交,数据已通过。我不知道为什么第一种方法行不通,但是我不需要知道:)
HTMLFormElement对象的submit方法应该只提交表单,就像用户单击了提交按钮一样。因此,如果表单的action属性设置为#,则似乎只是刷新页面,因为它将表单数据发送到同一页面。
奇怪的是,当我们将action属性设置为另一个页面时,它仍然会执行该操作。
表单的method
属性是否设置为get
或者post
?