1

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

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

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

JavaScript 解决方案是允许的,但最好没有 JavaScript 解决方案。

(我将发布这个问题的答案,但我不是特别喜欢它,所以我欢迎其他选择)。

4

4 回答 4

2

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

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

于 2012-07-16T11:57:12.650 回答
1

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

于 2012-07-16T11:24:34.117 回答
0

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

于 2012-07-16T11:19:53.083 回答
0

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

于 2012-07-16T11:35:10.453 回答