jQuery.getJSONやjQuery.postを利用するのですが引数のdata部分を作成するのがどうもやぼったい。
そう思いつつも、そこまで問題でもないのでデータ部分の配列を自力で作って利用していたのですが、今日リファレンスを眺めていたら見つけました。
今更感もありますが、私と同じく知らない人はどうぞ。
.serializeArray() – jQuery API
form内のelementをajax向け配列に変換してくれます。(たぶんform内じゃなくてもいいと思う)
<html> <head> <title>serializeArray/jquery test</title> </head> <body> <form id="test_form"> <input type="text" name="namae" style="width:100px;" value="123"><br> <input type="radio" name="blood" value="b_a">A <input type="radio" name="blood" value="b_b">B <input type="radio" name="blood" value="b_ab" checked>AB <input type="radio" name="blood" value="b_o">O<br> <input type="hidden" name="key" value="hoge"> <input type="button" id="run" value="test"> </form> <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script> <script type="text/javascript"> (function ($) { $('#run').click(function (){ var arr = $('#test_form :input'); console.log(arr.serializeArray()); console.log(arr.serialize()); }); })(jQuery); </script> </body> </html>
結果
[ Object { name="namae", value="123" }, Object { name="blood", value="b_ab" }, Object { name="key", value="hoge" } ] namae=123&blood=b_ab&key=hoge
.serialize() – jQuery APIも見つけたので試してみました。
.serializeArray()の結果をそのままjQuery.getJSONで利用できるのでとても便利ですね。