現在送信フォームを作成しています。
formactionで送信方法をGETかPOSTであらかじめ設定して送信することはできます。
これをユーザー側から送信方法をどちらで送信するか選択できる方法を探しているのですがご存知の方いらっしゃいませんか?
formactionを2つ作成してそれぞれmethodを別々に指定しましたがどちらもGETで送られてしますので…
何卒宜しく御願いします。
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答4件
0
素朴に思ったことなのですが、ユーザーから見て「GET/POSTを選ばせる」というのは、多くの場合に混乱しか生まない気がします。
大半のユーザーにとってはGETで送られるかPOSTで送られるかなどどうでもいいわけですし、そもそもそれぞれが何を意味するかも知らない、ということも多いでしょう。
REST設計になっていて同じエントリポイントげのGET/POSTで挙動が変わる、ということはあるのかもしれませんが、それで同じフォームを使うこともないとは思います。
GETやPOSTそのものの技術的な見本にするなら別ですが、そうでない場面で同じ機能の送信手段をユーザーに選ばせる必要はあまりないでしょう。
投稿2015/12/22 05:20
総合スコア145183
0
ベストアンサー
javascriptは分かりますでしょうか?
分かるのなら、以下のようにしてみてはいかがでしょうか。
HTML
HTML
1<select id="method_select"> 2 <option value="GET" selected>GET</option> 3 <option value="POST">POST</option> 4</select> 5 6<form action="hoge.html" id="form"> 7 <input type="submit" id="form_submit" value="送信"> 8</form>
javascript
javascript
1document.getElementById("form_submit").onclick = function(e){ 2 e.preventDefault(); 3 var method = document.getElementById("method_select").value; 4 var form = document.getElementById("form"); 5 form.method = method; 6 form.submit(); 7}
上記は未検証ですので、お気を付けください。
投稿2015/12/22 03:33
総合スコア1698
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2015/12/23 23:53 編集
2015/12/24 01:05
2015/12/24 01:07
2015/12/24 05:31
0
下記の方法で解決いたしました。
HTML
1<select id="method_select"> 2<option value="GET" selected>GET</option> 3<option value="POST">POST</option> 4</select> 5<button type="submit" value="送信"> 6</button>
Javascript
1$(function() { 2 $('#FORM').cleanQuery(); 3 }); 4 5 $(function() { 6 $('#FORM').on('submit', function(e) { 7 e.preventDefault(); 8 var $form = $(this).clone(); 9 $form.prop('method', $('#method_select').val()); 10 $(this).find(':input').each(function() { 11 var $element = $(this); 12 if ($element.val() == '') { 13 $form.find('*[name="' + $element.prop('name') + '"]').remove(); 14 } 15 }); 16 $form.submit(); 17 }); 18 });
投稿2015/12/24 05:28
総合スコア148
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
formタグが読み込まれる前にイベントを設定しようとしているのだと思います。
ShunsukeIzuiさんのJavaScriptのコードを
window.onload関数内で実行してみてください。
JavaScript
1window.onload = function(){ 2 document.getElementById("form_submit").onclick = function(e){ 3 e.preventDefault(); 4 var method = document.getElementById("method_select").value; 5 var form = document.getElementById("form"); 6 form.method = method; 7 form.submit(); 8 } 9}
投稿2015/12/24 03:19
総合スコア1507
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2015/12/22 05:58