来自<A>标签的POST

Car*_*n42 41 html post

是否可以仅从<a>标签进行POST ?我知道锚标签通常只适用于GET,而且我知道我可以使用javascript来执行此操作(就像在JavaScript提交请求中一样提交表单)但对我来说这似乎有点混乱.有没有办法用直接的HTML做到这一点?

Ry-*_*Ry- 32

不是,不是.但是,您可以执行以下操作:

<form action="theUrl" method="POST">

<input type="hidden" name="param1" value="val" />
<input type="hidden" name="param2" value="val2" />

<a href="#" onclick="this.parentNode.submit()">Go to that link!</a>

</form>
Run Code Online (Sandbox Code Playgroud)

不过,你应该找到一个更好的方法.这个不会优雅地降级.


Ode*_*ded 26

没有办法只使用HTML POSTa元素.

从这个DTD片段(HTML 4.01规范)可以看出:

<!ELEMENT A - - (%inline;)* -(A)       -- anchor -->
<!ATTLIST A
  %attrs;                              -- %coreattrs, %i18n, %events --
  charset     %Charset;      #IMPLIED  -- char encoding of linked resource --
  type        %ContentType;  #IMPLIED  -- advisory content type --
  name        CDATA          #IMPLIED  -- named link end --
  href        %URI;          #IMPLIED  -- URI for linked resource --
  hreflang    %LanguageCode; #IMPLIED  -- language code --
  rel         %LinkTypes;    #IMPLIED  -- forward link types --
  rev         %LinkTypes;    #IMPLIED  -- reverse link types --
  accesskey   %Character;    #IMPLIED  -- accessibility key character --
  shape       %Shape;        rect      -- for use with client-side image maps --
  coords      %Coords;       #IMPLIED  -- for use with client-side image maps --
  tabindex    NUMBER         #IMPLIED  -- position in tabbing order --
  onfocus     %Script;       #IMPLIED  -- the element got the focus --
  onblur      %Script;       #IMPLIED  -- the element lost the focus --
  >
Run Code Online (Sandbox Code Playgroud)

没有其控制是否使用属性POSTGETa元件.

必须对它进行脚本,如果你想滥用语义.

  • 我喜欢你的结论是“如果你想滥用语义”,即**人不应该这样做**并且应该使用推荐的方式来做这些事情,即使用“表单”来提交数据。 (2认同)

SLa*_*aks 10

您可以使用CSS <input type="submit">看起来像超链接.

  • @VGE:是的,但这可以完成他正在尝试做的事情. (6认同)
  • <input>不是<a>? (2认同)

tk_*_*tk_ 9

基本上,您不能对 POST 请求使用锚标记。但是,有一个简单的技巧可以实现这一点。

<form id="myform" method="post" action="target.html"></form>
<a onclick="document.getElementById('myform').submit();">Submit to action</a>
Run Code Online (Sandbox Code Playgroud)

我已经对此进行了测试,并且已经在我们的生产代码中使用了它。


nas*_*ome 5

如果它为某人服务:

<a href="/your-route"
    onclick="event.preventDefault();
    document.getElementById('magic-form').submit();">
    Magic Action
</a>
<form id="magic-form" action="/your-route" 
      method="POST" style="display: none;">
      {{ csrf_field() }} <!-- from your framework -->
      <input type="hidden" name="field1" value="value1" />
      <!-- other fields -->
</form>
Run Code Online (Sandbox Code Playgroud)