概要
form内の各ボタンそれぞれで別々のリクエスト先に振り分けたい。form内に配置したボタンは、クリックすると自動的にsubmitしてロードされてしまう。
<form action="/hoge">
<button>別リクエストに投げたいボタン </button><!-- /hogeにsubmitされる -->
<input type="submit" value="本命のsubmitボタン" >
</form>
formaction属性を使う
やり方は色々あるが、html5のformaction属性を使うのが一番スッキリすると思う。
<button formaction = "(リクエスト先URLを書く)" formmethod = "(リクエストメソッドを指定する)"> </button>
パラメーターを付与してリクエスト先で振り分けるとか、javascriptでボタンを補足して振り分けるとか他にもやりようがある。
でも、パラメータ付与はリクエスト先で条件分岐が増えて管理が面倒だし、javascriptで振り分けると一見してリクエストがどこに行くのかがわかりづらい。
formaction属性ならボタン自体がどのリクエスト先に向かうのかを知っているので管理しやすい。
注意点
formaction属性にはリクエストパラメータを付与できない。というかformのactionにもパラメータ指定できないので当然かも。以下のクエリパラメータはサーバサイドに送信されない。
<form action="/hoge?is_hoge=true">何かパラメータを送信したいならhiddenを使う。
<button formaction="/other_request?is_other=true">別リクエストに投げたいボタン </button>
</form>
<form action="/hoge">
<input type="hidden" name="is_hoge" value="true">
<input type="hidden" name="is_other" value="true">
<button formaction="/other_request">別リクエストに投げたいボタン </button>
</form>
0 件のコメント:
コメントを投稿