【问题标题】:Action parameter of form wrong when changing it via jquery通过jquery更改表单时,表单的动作参数错误
【发布时间】:2019-10-16 18:00:02
【问题描述】:

我在使用 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()。

非常感谢您!

【问题讨论】:

  • 如果您只提供相对路径,则该值将附加到当前 URL。如果要指定不同的域,则需要提供绝对路径,例如。 https://www.foo.com/test.php
  • 如果您不想重定向到相对路径,则必须包含完整的 url 而不是文件名。

标签: javascript jquery html forms action


【解决方案1】:

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

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

forwardUrl = baseUrl + "test.php"; 

【讨论】:

  • 问题是 URL 是 URI 编码的,所以它没有将其识别为完整的 URL,谢谢提示。
【解决方案2】:

您可以在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';

【讨论】:

  • 这听起来确实是一个可行的解决方案,不幸的是对我来说它没有成功。我设法通过使用'decodeURIComponent(forwardUrl);'来修复它不过,正如我在回答中提到的那样。感谢您的帖子。
【解决方案3】:

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

【讨论】:

    猜你喜欢
    • 2012-12-21
    • 2016-06-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-04
    • 1970-01-01
    • 2013-05-25
    相关资源
    最近更新 更多