例子:
<form>
<input type='submit'>
</form>
提交结果时:
http://example.com/?
如何制作:
http://example.com/
?
[这是一个非常简单的问题示例,实际表单有很多字段,但有时会禁用一些字段。当所有都被禁用时,尾随 ? 出现]
在我的情况下,我使用的是window.location,不确定它是不是最好的选择,但它是我唯一可以让它工作的:
$('#myform').submit(function()
{
... if all parameters are empty
window.location = this.action;
return false;
});
我真正的用途是将 GET 参数转换为真正的 url 路径,所以这里是完整的代码:
$('#myform').submit(function()
{
var form = $(this),
paths = [];
// get paths
form.find('select').each(function()
{
var self = $(this),
value = self.val();
if (value)
paths[paths.length] = value;
// always disable to prevent edge cases
self.prop('disabled', true);
});
if (paths.length)
this.action += paths.join('/')+'/';
window.location = this.action;
return false;
});
如果不使用 Javascript,我不确定是否存在。缓解该问题的一种方法可能是创建一个隐藏的输入,该输入仅包含一些您可以在另一侧忽略的垃圾值,如下所示:
<input type="hidden" name="foo" value="bar" />
这样你永远不会有一个空的 GET 请求。
这是一个旧帖子,但是嘿.. 来吧
如果您使用的是 PHP 之类的东西,您可以将表单提交到“代理”页面,该页面将标题重定向到特定位置 + 查询。
例如:
HTML:
<form action="proxy.php" method="get">
<input type="text" name="txtquery" />
<input type="button" id="btnSubmit" />
</form>
PHP (代理.php)
<?php
if(isset($_GET['txtquery']))
$query = $_GET['txtquery'];
header("Location /yourpage/{$query}");
?>
我假设这是你想要做的
我知道这是一个非常古老的问题,但我今天遇到了同样的问题。我会从不同的角度来处理这个问题,我的想法是,在这个时代,您可能应该在表单中使用 POST 而不是 GET,因为在查询字符串中传递值对于安全性和 GDPR 来说并不是很好。我们已经解决了很多问题,其中各种跟踪脚本一直在获取查询字符串(参数中包含 PII),破坏了它们拥有的任何服务条款。
通过发布,您将始终获得“干净的 url”,并且您无需对表单提交脚本进行任何修改。但是,如果期望 GET,您可能需要更改接收表单输入的任何内容。
我正在寻找类似的答案。我最终做的是创建一个按钮,单击时重定向到某个页面。
例子:
<button type="button" value="Play as guest!" title="Play as guest!" onclick="location.href='/play'">Play as guest!</button>
这不是您问题的“答案”,但可能是一个很好的解决方法。我希望这有帮助。
另一种选择是在提交之前使用 javascript 检查 FormData。
var myNeatForm = document.getElementById("id_of_form");
var formData = new FormData(myNeatForm); // Very nice browser support: https://developer.mozilla.org/en-US/docs/Web/API/FormData
console.log(Array.from(formData.entries())); // Should show you an array of the data the form would be submitting.
// Put the following inside an event listener for your form's submit button.
if (Array.from(formData.entries()).length > 0) {
dealTypesForm.submit(); // We've got parameters - submit them!
} else {
window.location = myNeatForm.action; // No parameters here - just go to the page normally.
}