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

Javascript 通过jquery更改表单时表单的操作参数错误,javascript,jquery,html,forms,action,Javascript,Jquery,Html,Forms,Action,我在jquery中遇到了这种奇怪的行为,我似乎无法修复它。 基本上,我正在尝试在提交表单之前将表单的操作参数设置为特定的URL。 当我提交表单时,由于某种原因,我将其设置为的URL只是被附加到另一个URL,我猜这就是以前的URL 这是我用来设置动作参数的代码 //clear action parameter jQuery("form[name='form1']").attr('action',''); alert(forwardUrl); //set the

我在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

但是,当我运行代码并提交表单时,它会将值发布到
https://www.test.com/test.php

我意识到,将其附加到发布源的url可能是一种标准行为。如果是这种情况,我怎样才能发布到另一个恰好是
forwardUrl
的URL

我还尝试使用.prop()而不是.attr()


提前非常感谢

onclick
属性的帮助下,单击
submit
按钮时,只需设置
操作

<input type='submit' value='Submit' onclick='this.form.action="forwardUrl";' />
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)
解决了这个问题。

如果您只提供了一个相对路径,那么该值将附加到当前URL。如果要指定不同的域,则需要提供绝对路径,例如
https://www.foo.com/test.php
如果不想重定向到相对路径,则必须包含完整的url而不是文件名。这听起来确实是一个可行的解决方案,不幸的是,对我来说,它没有做到这一点。我通过使用“decodeURIComponent(forwardUrl);”来修复它不过,正如我在回答中提到的。谢谢你的帖子。问题是URL是URI编码的,所以它没有识别出它是完整的URL,谢谢你的提示。