POSTを単に<a>
タグ?アンカータグは通常GET専用であり、javascriptを使用してこれを行うことができることを知っています( フォーム送信のようなJavaScriptのポストリクエスト )。ストレートHTMLでこれを行う方法はありますか?
HTMLのみを使用してPOST
とa
要素を作成する方法はありません。
このDTDフラグメントからわかるように( HTML 4.01 spec ):
<!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 --
>
POST
またはGET
要素でa
を使用するかどうかを制御する属性はありません。
セマンティクスを悪用する場合は、スクリプトを作成する必要がありますhave。
そうでもないただし、次のようなことができます。
<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>
ただし、より良い方法を見つける必要があります。これは正常に劣化しません。
CSSを使用して、<input type="submit">
をハイパーリンクのように見せることができます。
誰かにサービスを提供する場合:
<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>
簡単な答え:いいえ。このようなことをするにはJavaScriptを使用する必要があります。 POSTを行うと、HTTPリクエストでデータを送信することになります。getでは、文字列の一部として送信するだけです(したがって、 href
値)。
明らかに、javascript submit()なしではありません。
いいえ、スクリプトを使用せずにこれを行う方法はありません。ただし、CSSを使用して標準の[送信]ボタンのスタイルを設定し、タグのような外観と動作を実現できます。
Data-method = "post"を追加する必要があります
例えば: <a href="/some-link" data-method="post">Logout</a>
私が考える2つの方法は、JavaScript(あなたが言ったように)を使用するか、サーバースクライブを使用することです。
基本的に、GETリクエスト(Aを含む)をサーバーファイルに送信すると、GET varsがPOSTに変更され、すぐに再送信(リダイレクト場所)されます。リファラーの統計。