通过 jquery 更改表单时的操作参数错误

Action parameter of form wrong when changing it via jquery

我在使用 jquery 时遇到了这种奇怪的行为,我似乎无法修复它。 基本上发生的事情是我试图在提交之前将表单的操作参数设置为特定的 URL 。 当我提交表单时,出于某种原因,我将其设置为 URL 只是附加到另一个 URL,我猜这是之前存在的 URL。

这是我用来设置动作参数的代码。

    //clear action parameter
    jQuery("form[name='form1']").attr('action',''); 
    alert(forwardUrl);

    //set the action parameter
    jQuery("form[name='form1']").attr('action',forwardUrl);
    //action parameter output
    alert('action parameter attribute: ' +  jQuery("form[name='form1']").attr('action'));

    //submit form
    jQuery("form[name='form1']").submit();

例如使用 forwardUrl = "test.php" 两个警报的输出都是 test.php.

然而,当我 运行 提交代码和表单时,它 POSTING 值 https://www.test.com/test.php

我意识到附加到它发布的 url 可能是标准行为。如果是这样,我怎么能 POST 到另一个 URL 而恰好是 forwardUrl?

我也尝试过使用 .prop() 而不是 .attr()。

非常感谢您!

onclick属性

的帮助下点击submit按钮时可以简单地设置action
<input type='submit' value='Submit' onclick='this.form.action="forwardUrl";' />

或将您的代码更改为类似这样的内容,首先向表单提供 id 并使用该 id 设置 action 属性

document.getElementById('formID').action = 'forwardUrl';

或使用表单名称作为

document.getElementsByName("form1")[0].action = 'forwardUrl';

使用绝对路径,如 Rory 所述:

baseUrl = "https://www.test2.com/";  // Domain you need to send the form to

forwardUrl = baseUrl + "test.php"; 

我通过在 forwardUrl 上使用 decodeURIComponent(forwardUrl) 设法解决了这个问题。