使用带有 HTML 锚标记的 POST 方法

Posted

技术标签:

【中文标题】使用带有 HTML 锚标记的 POST 方法【英文标题】:Using the POST Method with HTML Anchor Tags 【发布时间】:2012-01-13 23:38:30 【问题描述】:

我确定答案是“不”,但我还是想问一下 以防我错过了什么。

每个人都知道通过使用锚标记将数据传递到页面 GET 方法:

我想知道是否有办法做同样的事情,但使用 而不是 POST 方法?

我这样做的目的是保持用户看到的 URL 干净,而不是 把他们不需要看到的东西放进去。

这与我已经知道的安全问题无关 将是获取正在传递的数据的方法。

如果答案确实是否定的,那么人们使用什么方法来传递数据 何时希望保持 URL 干净?饼干?还有什么?

以及当URL长度超过允许的GET请求长度时如何处理的场景

我在使用 displaytag 实现排序/分页时遇到了这个问题,所有请求参数都附加在排序/分页 url 中,这超过了 GET 请求的允许长度。

【问题讨论】:

【参考方案1】:

你可以这样做:

<form method="post" action="target.html">
  <input type="hidden" name="name" value="value" /> 
  <a onclick="this.parentNode.submit();">click here</a>
</form>

【讨论】:

试过了,但它总是在 chrome 中执行 GET。知道为什么吗? &lt;a onclick="document.getElementById('myform').submit(); return false;"&gt;click here&lt;/a&gt; 不幸的是,&lt;form&gt; 的存在会影响布局。更喜欢完全隐藏的东西。 @JesseGlick 晚了将近一年,但是给给定的form 元素使用inline 样式怎么样?【参考方案2】:

此行为特定于显示标签库。它允许轻松添加书签的搜索结果。如果你真的打算改变它以使用 POST,那么你需要重写显示标签库或引入一些jQuery 来操作链接。

你剩下的问题无处可去。如果您想要 GET(幂等请求、可收藏的 URL、可搜索机器人抓取的 URL 等),请使用 GET。如果您想要 POST(非幂等请求、不可书签 URL、不可抓取 URL 等),请使用 POST。

通常,当请求可以修改服务器中的数据时,POST 是强制性的。想想 SQL INSERTUPDATEDELETE 等。你肯定不会发出这种请求 GET。想象一下,您有一个表,其中包含所有执行 GET 的“删除行”链接,然后出现了一个搜索机器人......

【讨论】:

【参考方案3】:

您可以使用 javascript。 onclick 链接做 form.submit

我知道处理长 URL 的唯一方法是使用 POST。

【讨论】:

【参考方案4】:

您可以创建一个临时表单并在&lt;a&gt; 标签的onclick 事件中提交。

【讨论】:

【参考方案5】:

它将作为post工作,名称值可以通过锚标签和name=""的值可以访问$_POST[] globl var

【讨论】:

以上是关于使用带有 HTML 锚标记的 POST 方法的主要内容,如果未能解决你的问题,请参考以下文章

带有Javascript onclick事件的HTML锚标记

带有 ASP.NET MVC 6 锚标记助手的 QueryString

带有锚标记的 Internet Explorer css

怎么样在HTML页面上添加锚点啊?

JavaScript 提交带有锚标记的表单(链接)

如何在文本C#中用超链接/锚标记替换带有括号的url