既存のコードをあまり変えずにPOSTしたい場合や、そのまま書くとformタグがネストしてしまう時にjQueryだけでPOSTできたら嬉しいかなと思い、その方法を調べてみた。
AjaxではなくformタグでPOSTしてページ遷移するのと同じ状況にしたい。
やり方としてはjQueryオブジェクトでformを作成してbodyへ追加した後、submitメソッドを実行すればそういうフォームが存在するのと同じことになる。
<script type="text/javascript">
function postForm(){
$('<form/>', {action: 'post.php', method: 'post'})
.append($('<input/>', {type: 'hidden', name: 'account', value: 'krhitoshi'}))
.append($('<input/>', {type: 'hidden', name: 'name', value: 'Hitoshi Kurokawa'}))
.appendTo(document.body)
.submit();
}
</script>
<button onclick="postForm();">jQueryによるPOST</button>
typeがhiddenであれば、画面上は何も変わらずPOSTできる。
HTMLで書くと内容的には次のようになる。
<form action="post.php" method="post"> <input type="hidden" name="account" value="krhitoshi"> <input type="hidden" name="name" value="Hitoshi Kurokawa"> <input type="submit" value="フォームによるPOST"> </form>
とりあえず、これで実現できることは分かったけど、他に方法ないものだろうか。

