JavaScript Post Form不会重定向

时间:2014-06-15 02:03:11

标签: javascript forms

我试图用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。

4 个答案:

答案 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;作为提交字段。