示例:
<form>
<input type='submit'>
</form>
提交结果时:
http://example.com/?
如何制作:
http://example.com/
[这是一个非常简单的问题示例,实际表单有很多字段,但有些字段有时会被禁用。当所有人都被禁用时,尾随?出现]
答案 0 :(得分:4)
在我的情况下,我使用 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;
});
答案 1 :(得分:0)
我正在寻找类似的答案。我最终做的是创建一个按钮,在单击时重定向到某个页面。
示例:
<button type="button" value="Play as guest!" title="Play as guest!" onclick="location.href='/play'">Play as guest!</button>
这不是你问题的“答案”,但可能是一个很好的解决方法。我希望这会有所帮助。
答案 2 :(得分:0)
不使用Javascript,我不确定是否有。缓解问题的一种方法可能是创建一个隐藏的输入,只保留一些垃圾值,你可以在另一边忽略这样的:
<input type="hidden" name="foo" value="bar" />
这样你就永远不会有空的GET请求。
答案 3 :(得分:0)
这是一个老帖子,但是嘿..这里你去了
如果您使用的是PHP,您可以将表单提交到“代理”页面,该页面将标题重定向到特定位置+查询。
例如:
HTML:
<form action="proxy.php" method="get">
<input type="text" name="txtquery" />
<input type="button" id="btnSubmit" />
</form>
PHP(proxy.php)
<?php
if(isset($_GET['txtquery']))
$query = $_GET['txtquery'];
header("Location /yourpage/{$query}");
?>
我假设你正在尝试做什么
答案 4 :(得分:0)
另一种选择是在提交之前使用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.
}
答案 5 :(得分:0)
我知道这是一个非常老的问题,但是今天我遇到了同样的问题。我会从另一个角度来解决这个问题,我的想法是,在当今时代,您可能应该在表单中使用POST而不是GET,因为在查询字符串中传递值对安全性和GDPR不利。我们遇到了很多问题,其中各种跟踪脚本都在提取查询字符串(参数中包含PII),破坏了它们具有的任何服务条款。
通过发布,您将始终获得“干净的URL”,并且无需对表单提交脚本进行任何修改。但是,如果期望收到GET,则可能需要更改接收表单输入的任何内容。