带有 GET 和额外参数的 HTML 表单提交

Posted

技术标签:

【中文标题】带有 GET 和额外参数的 HTML 表单提交【英文标题】:HTML Form submission with GET and extra arguments 【发布时间】:2012-03-04 20:51:50 【问题描述】:

这是我的情况,我有一个页面,上面有一个表格。表单只是一个查询,所以我使用“GET”方法。我有一个作为令牌传递的变量,该变量的格式为“x = 2&y = 5”,因为该变量作为编码的url传递到我的页面中,将其解析为字典只是额外的工作'x':2,'y':5。理想的情况如下:

<form method="GET" action="/path/to/action/?x=2&y=5">
    <input type="text" name="some_other_val">
    ... more inputs here etc.
</form>

不幸的是,当我这样做时,浏览器会删除结尾的 x=2&y=5 并且只是将表单字段作为参数附加。我不只是使用&lt;input type="hidden" name="x" value="2"&gt; 的原因是因为就像我说的字符串已经是那种形式,我需要专门对其进行解码。将值添加到操作 url 的末尾更简单。任何建议将不胜感激。请注意,我在这里找到了一个非常相似的主题adding URL parameters to a form php html,但所提出的解决方案都没有解决我的基本问题。我还尝试了在末尾附加“&”的提示,但它也不起作用!有没有可能做我想做的事?

【问题讨论】:

如果您让我们知道您使用什么语言呈现页面,我们或许可以建议一个函数来帮助您进行所需的 URL 解析。 我在 python 2.7 上使用 python django 1.3。 查看urlparse模块中的parse_qs函数:docs.python.org/library/urlparse.html#urlparse.parse_qs 谢谢!这正是我所需要的! 【参考方案1】:

应该使用隐藏的表单元素作为您所描述的额外参数:

<input type="hidden" id="x" value="2" />
<input type="hidden" id="y" value="5" />

这可确保在使用 GET 时参数将正确显示在 URL 上,而不是被删除。

我不太明白你反对它们的论点,好像你可以将它们附加到表单操作中,你应该能够轻松地将其更改为 hidden 表单元素。

【讨论】:

它对我不起作用(Django 1.8)。我必须使用name,而不是id 才能使其工作:&lt;input type="hidden" name="x" value="2" /&gt;

以上是关于带有 GET 和额外参数的 HTML 表单提交的主要内容,如果未能解决你的问题,请参考以下文章

html中post必须要用form表单,而get就可以不用form表单就可以提交了吗?

在 HTML 表单提交后提供文件“另存为”对话框

URL传值和form表单提交的区别和原理

ThinkPHP 中 form 表单用 get 提交会直接跳到首页,这个需要在哪里进行啥设置?

HTML 从选择中提交表单,但在 GET 中用逗号分隔值

form表单提交方法get可以,但用post提交却不行,我想知道为啥