根据提交按钮使用GET或POST

时间:2012-07-16 11:19:53

标签: html forms

我有一个用于标记数据和按标记查看数据的Web应用程序,因此我的UI是每个标记的复选框列表,每个数据项的复选框列表,“标记”按钮,它将选中的标记添加到已检查的数据和“过滤器”按钮,它忽略已检查的数据,只显示具有给定标签的数据项。

我的问题是前一个操作(标记数据)“显然”是一个POST操作,而后一个操作(根据标记查看数据)“显然”是一个GET操作。但是方法属性附加到表单,而不是提交按钮,因此我必须为两个按钮选择一个或其他。

我不想制作两种形式,因为据我所知,这将迫使我复制整个标签列表。有什么方法可以根据提交按钮的选择选择我的方法吗?

允许使用JavaScript解决方案,但不允许使用JavaScript解决方案。

(我将发布这个问题的答案,但我不是特别喜欢它,所以我会欢迎替代方案。)

4 个答案:

答案 0 :(得分:2)

原则上,您可以根据HTML5在提交按钮中使用formmethod属性。但是,即使在IE 9中,IE也无法识别它.HTML5中的功能的存在间接证明以前版本的HTML缺少此功能。

另一方面,POST方法甚至可以用于简单的查看,不会引起外界的任何变化,并且在许多情况下 由于技术原因而被使用(例如,太多的数据)。所以我认为方法问题不是很相关;只需使用POST。

答案 1 :(得分:1)

我会诚实地使用javascript解决方案,在表单的onsubmit中触发 a)检查按下的提交按钮并 b)的方法基于此更改表单的方法。

答案 2 :(得分:0)

一种可能的解决方案是使用POST,然后让服务器提供303 See Other标头将其更改为GET请求。这涉及到两个请求服务于一个的目的,这是不幸的,但至少意味着URL将改变,以便人们可以链接到特定的标签选择。

答案 3 :(得分:0)

我同意Jon Taylor提出的javascript解决方案,问题不在于您的表单方法是GET还是POST,而是如何过滤/验证/清理用户输入。如果您的关注与事实相关,即用户可以操作表单的方法,那么您应该在服务器端实现该问题的解决方案。