我试图用JavaScript发布表单。 第I页发布通常会返回附加.request_id的重定向。 当我手动操作时它可以工作但是:
document.forms["formId"].submit();
它给了我网站的回复,所有数据都写在字段中,但它没有发布。
可以这样做吗? 更清楚:
表单中的操作URL如下所示:
action="http://www.someurl.com/path/to/page.jsp?_DARGS=value"
当我手动发布网站重定向我和表单提交是一个成功的URL看起来像这样:
http://www.someurl.com/path/to/page.jsp?request_id=87475
但是,当我通过JavaScript进行操作时,它会将我带到页面但没有重定向,URL与表单操作属性中的相同。
http://www.someurl.com/path/to/page.jsp?_DARGS=value
并且表单未提交,只是再次显示填写的字段。 所以问题是:有什么区别,为什么它不能与JavaScript重定向?
如果可以,我更喜欢纯JavaScript,但如果这是唯一的选择,我也可以使用jQuery。
答案 0 :(得分:0)
在页面上找到您的表单,然后按照以下代码提交
document.getElementById("formId").submit();
答案 1 :(得分:0)
请参阅此jsfiddle。
<form name="formName" id="formId"></form>
console.log(document.forms['formName']);
console.log(document.forms['formId']);
我正在使用最新版本的Chrome,而且这两个版本都在选择当前表单。这意味着(至少在我的浏览器中)可以使用您使用的方法按ID或按名称选择表单。
这让我相信代码中的其他地方可能存在问题,您当前的代码是正确的。一个常见问题是在DOM加载之前调用JavaScript方法。
解决这个问题:
确保所有代码都在<body>
:
<!-- your HTML, then... -->
<script>
// your code
</script>
</body>
或者,将您的代码放在onload
处理程序中:
window.onload = function() {
// your code
};
正如您在帖子中提到的jQuery,在文档中包含jQuery,然后调用:
$(function() {
// your code
});
答案 2 :(得分:0)
document.getElementById('formID').submit();
对于您的代码,它可以使用表单名称,如下所示:
document.forms['formName'].submit();
答案 3 :(得分:0)
回答我自己的问题:
表单提交行为不同的原因是因为当使用JavaScript submit()函数时,表单中的所有字段都会被发送,但不会提交字段本身。
这不会在请求标头中发送:
<input type="submit" name="somename" value="value" />
解决方法是使用JavaScript click()函数或创建一个名称相同的隐藏字段=&#34; value&#34;作为提交字段。