使用带有 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。知道为什么吗?<a onclick="document.getElementById('myform').submit(); return false;">click here</a>
不幸的是,<form>
的存在会影响布局。更喜欢完全隐藏的东西。
@JesseGlick 晚了将近一年,但是给给定的form
元素使用inline
样式怎么样?【参考方案2】:
此行为特定于显示标签库。它允许轻松添加书签的搜索结果。如果你真的打算改变它以使用 POST,那么你需要重写显示标签库或引入一些jQuery 来操作链接。
你剩下的问题无处可去。如果您想要 GET(幂等请求、可收藏的 URL、可搜索机器人抓取的 URL 等),请使用 GET。如果您想要 POST(非幂等请求、不可书签 URL、不可抓取 URL 等),请使用 POST。
通常,当请求可以修改服务器中的数据时,POST 是强制性的。想想 SQL INSERT
、UPDATE
、DELETE
等。你肯定不会发出这种请求 GET。想象一下,您有一个表,其中包含所有执行 GET 的“删除行”链接,然后出现了一个搜索机器人......
【讨论】:
【参考方案3】:您可以使用 javascript。 onclick 链接做 form.submit
我知道处理长 URL 的唯一方法是使用 POST。
【讨论】:
【参考方案4】:您可以创建一个临时表单并在<a>
标签的onclick 事件中提交。
【讨论】:
【参考方案5】:它将作为post工作,名称值可以通过锚标签和name=""的值可以访问$_POST[] globl var
【讨论】:
以上是关于使用带有 HTML 锚标记的 POST 方法的主要内容,如果未能解决你的问题,请参考以下文章
带有Javascript onclick事件的HTML锚标记