jQueryでformの値をajax向け配列に変換

By | 2012/3/5 月曜日

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で利用できるのでとても便利ですね。

コメントを残す

メールアドレスが公開されることはありません。