Javascript 如何在注销某人之前提交包含数据的表单?

Javascript 如何在注销某人之前提交包含数据的表单?,javascript,forms,submit,Javascript,Forms,Submit,我将document.form.submit()函数用于一个相当大的输入表单(数百个字段,这是一个清单应用程序)。我在用户空闲一段时间后调用它,我想保存他们键入的任何数据。当我尝试此操作时,页面将重新加载(操作为#),但字段中键入的任何新文本都不会传递到请求中,因此我无法将其放入数据库中。这种情况发生的根本原因是什么,还是我的代码不能很好地结合在一起(我使用EXTJS网格视图来显示表单和用于跟踪空闲时间的库)? 谢谢 Robert服务器可能正在作废输入值。如果服务器上的页面如下所示: <f

我将document.form.submit()函数用于一个相当大的输入表单(数百个字段,这是一个清单应用程序)。我在用户空闲一段时间后调用它,我想保存他们键入的任何数据。当我尝试此操作时,页面将重新加载(操作为#),但字段中键入的任何新文本都不会传递到请求中,因此我无法将其放入数据库中。这种情况发生的根本原因是什么,还是我的代码不能很好地结合在一起(我使用EXTJS网格视图来显示表单和用于跟踪空闲时间的库)? 谢谢
Robert

服务器可能正在作废输入值。如果服务器上的页面如下所示:

<form action="/page.cgi">
  ...
  <input name="Fieldx" value=""/>
</form>

...
我想这会使场地变得空旷。或者,这可能是服务器操作间接设置的。在JSF中,类似这样的东西

<input name="Fieldx" value="#{bean.nullProperty}"/>


服务器上有什么,浏览器是什么?

我会尝试捕获HTML post请求,看看是否包含输入字段。如果是,那么您的服务器有问题


但是关于你所说的,我认为这是因为你的浏览器处理JavaScript DOM的方式存在冲突。如果您在表单上省略“提交”按钮,则可能会出现这种情况。

我想我把答案放在这里了。我发现这样做: setTimeout('frm.submit();',2000); 导致页面重新加载,但未提交表单。当我这样做的时候: frm.submit();
表单已提交,数据已传递。我不知道为什么第一种方法不起作用,但我不需要知道:)

对象的
HTMLFormElement
方法应该只提交表单,就像用户单击了提交按钮一样。因此,如果表单的
action
属性设置为
#
,它似乎只是刷新页面,因为它将表单数据发送到同一页面

奇怪的是,当您将action属性设置到另一个页面时,它仍然会这样做


表单的
方法
属性是否设置为
get
post

确定我将表单操作更改为另一个页面,发现调用form.submit函数时,页面仍会刷新,而不是转到另一个页面。有人知道为什么会发生这种情况吗?然后我从setTimeout函数中取出了form.submit(以消除显示popover div后的延迟),它成功了!现在我必须弄清楚如何区分是否应该注销该用户…感谢您的回答,虽然在发布结果之前我没有看到它们。我后来还发现第一种方法不起作用的原因是setTimeout内函数周围有单引号。当我在frm.submit();)周围放置了双qoutes时,我就使用了setTimeout函数;。