2011-05-30 33 views
30

是否可以從<a>標籤進行POST?我知道錨標籤通常只是爲GET,我知道我可以使用JavaScript來做到這一點(如在JavaScript post request like a form submit),但對我來說似乎有點混亂。有沒有辦法用直線HTML做到這一點?從<A>標籤發佈

+0

可能重複[使用POST而不是GET](http://stackoverflow.com/questions/3915917/make-a-link-use-post-instead-of-get) – Blauhirn 2017-01-14 00:52:39

回答

21

沒有辦法POSTa元素只使用HTML。

<!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 -- 
    > 

有是控制是否使用POSTGETa元件沒有屬性:

如從該DTD片段(HTML 4.01 spec)中可以看出。

來編寫腳本,如果你想濫用語義。

2

簡單的回答:沒有。你需要使用JavaScript來做這種事情;因爲當你做一個POST你正在做的是發送HTTP請求中的數據。得到你只是把它作爲字符串的一部分發送(因此你可以通過href值來完成)。

8

您可以使用CSS使<input type="submit">看起來像超鏈接。

+2

不是 ? – VGE 2011-05-30 19:54:11

+0

這個讓我微笑;對於真正的<3 – MarioRicalde 2011-05-30 19:54:19

+6

@VGE:是的,但是這可以實現他想要做的事情。 – SLaks 2011-05-30 20:16:37

1

沒有明確不是沒有javascript submit()。

1

沒有沒有辦法做到這一點,而不使用腳本。儘管您可以使用CSS來創建標準的Submit按鈕,使其更像一個標籤。

24

不是,沒有。但是,您可以這樣做:

<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> 

不過,您應該找到更好的方法。這個不會優雅地退化。

+0

onclick =「this.parentNode.submit()」應該是 onclick =「event.preventDefault(); this.parentNode.submit()」using jQuery。 它會更好。 – 2016-09-20 05:58:25

+1

@ThếAnhNguyễn:幾乎沒有問題,因爲表單正在提交。再一次,理想情況下,你根本不會這樣做,並且設計一個按鈕來代替鏈接。 – Ryan 2016-09-22 06:16:55

0

我想到的兩種方式都是使用JavaScript(如您所說)或通過服務器定製。

您基本上會將GET請求(帶有A)發送到某個服務器文件,這會將GET vars更改爲POST,然後立即重新提交(重定向位置)。但是這會混淆我認爲的參考數據。