【问题标题】:Submit a form without query string提交没有查询字符串的表单
【发布时间】:2016-08-29 23:00:52
【问题描述】:

我在一个类似http://example.com?query=value 的页面上,它的表单为<form id="formId" method="POST">

在没有查询字符串的情况下将表单提交到http://example.com 的最佳方式是什么?

我目前正在尝试:

$('#formId').submit(function(e){
    e.preventDefault();
    var url = window.location.href; 
    if (url.indexOf("?") != -1){
        $('#formId').attr('action', url.split("?")[0]);
    }
    $('#formId').submit();
});

但它似乎不起作用。

我更喜欢 javascript/jQuery 解决方案,因为这种模式在网站中很常见

【问题讨论】:

  • 嗯你想要什么?
  • 为什么不在 HTML 中设置 action 属性?理论上,它是<form> 元素的必需属性
  • @Phil 因为这需要在页面启动期间了解页面 url,由于我的模板策略,我没有。这就是为什么我要一个 Javascript/jQuery 解决方案,它很容易包含在每个页面上。

标签: javascript jquery html post query-string


【解决方案1】:

与其尝试更改提交时的操作,不如只查找没有action 属性的表单并适当设置它们,例如

jQuery(function($) {
    $('form:not([action])').attr('action', location.pathname);
});

【讨论】:

    【解决方案2】:

    对于其他人来说,一个快速而肮脏的解决方案是将表单操作属性设置为“?”。例如:

    <form id="formId" method="POST" action="?">

    这会将请求发布到当前 url,查询字符串只是一个“?”

    虽然这不使用 javascript,但它可能不是 OP 所追求的答案。

    【讨论】:

      猜你喜欢
      • 2011-08-18
      • 2023-03-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-10-20
      • 2013-08-07
      相关资源
      最近更新 更多