为什么我需要将表格附加到身体上

时间:2014-02-26 09:01:23

标签: javascript forms

我使用像

这样的JavaScript创建了一个表单
//Create a form 
var form = document.createElement('FORM');
form.name = 'myForm';
form.method = 'POST';
form.action = 'SomePath';
//Create  a hidden filed
var hidden = document.createElement('INPUT');
hidden.type = 'HIDDEN';
hidden.name = 'MyHiddenField';
hidden.value = 'MyHiddenFieldValue';
form.appendChild(hidden);
//Submit form
form.submit();

脚本执行时。执行所有语句没有任何错误。但实际上并没有提交表格。

然而,当我附加文件时。像

document.getElementsByTagName('body')[0].appendChild(form);

//Submit form
form.submit();

一切正常。我的问题是为什么我需要将表单附加到正文?我错过了什么。

编辑:它没有在 chrome 中向body添加表单。

2 个答案:

答案 0 :(得分:5)

我不确定,我猜想DOM和Javascript的创建者认为form是一个固有的文档相关实体,并没有考虑是否有可能提交一个不是附在DOM上。

无论如何,如果您不想看到它,那么在您附上表单之前,请执行

form.style.visibility = 'hidden';

答案 1 :(得分:4)

提交方法的作用完全取决于是否包含在DOM中:

  

标准使用HTML表单需要加载数据所在的页面   发送,这意味着整个页面都会刷新。

它实际上需要在DOM中进行页面加载。

当Ajax出现时,我们使用隐藏的iframe发送表单而不会刷新实际页面。

但是如果你想使用表单元素,在不刷新页面的情况下创建Http调用,你需要通过JavaScript来实现。

这是最好的参考资料之一,它可以帮助您,决定如何使用html表单标记执行您想要的操作:

Sending forms through JavaScript