我使用像
这样的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
添加表单。
答案 0 :(得分:5)
我不确定,我猜想DOM和Javascript的创建者认为form
是一个固有的文档相关实体,并没有考虑是否有可能提交一个不是附在DOM上。
无论如何,如果您不想看到它,那么在您附上表单之前,请执行
form.style.visibility = 'hidden';
答案 1 :(得分:4)
提交方法的作用完全取决于是否包含在DOM中:
标准使用HTML表单需要加载数据所在的页面 发送,这意味着整个页面都会刷新。
它实际上需要在DOM中进行页面加载。
当Ajax出现时,我们使用隐藏的iframe发送表单而不会刷新实际页面。
但是如果你想使用表单元素,在不刷新页面的情况下创建Http调用,你需要通过JavaScript来实现。
这是最好的参考资料之一,它可以帮助您,决定如何使用html表单标记执行您想要的操作: