2009-08-26
jQueryでフォームの内容をJSONで投げ、受け取ったJSONをフォームに戻す方法
jQuery | |
![]()
今回RESTのサービスを使っていて、そのインターフェースはJSONになっている。リクエストもレスポンスも。サーバ側(Java)では、JSONICというJSONライブラリを使っていて、JSON形式の文字列をJavaのオブジェクトに変換したりまた、その逆を行ったりしている。
そこで、フォームの内容をがつっとJSONに変換して送信したり、また、JSONで取得したデータをがつっとフォームに戻したいなーと思って色々探してみた。
そのときのメモ。
フォームの内容をJSON形式の文字列にする方法。
まず、フォームの内容をJavaScriptのハッシュにする。その時formの内容を取得するserializeArrayというメソッドが用意されているのでこれを使う。
// フォームを取得 var form = $('form-id'); var param = {}; // フォームの内容を取得 // serializeArrayの戻り値は[{key: 'キーの名前', value: '値'}]という形式になっている $(form.serializeArray()).each(function(i, v) { param[v.name] = v.value; });
ここまでで、フォームの内容がハッシュに変換された。このハッシュをJSON形式の文字列にするにはjquery-jsonプラグインを使う。
使い方はこんな感じ。
var json = $.toJSON(param);
これで、ハッシュからJSON形式の文字列に変換された。あとは、この文字列をサーバ側に送信すればよい。
JSON形式の文字列をフォームに適用する
次に、サーバからのレスポンス(ここでは、JSON形式の文字列が戻ってくると想定)をフォームに適用する場合を考える。
まず、JSON形式で受け取った文字列を先ほどとは逆にハッシュに変換する。これも、jquery-jsonプラグインが使える。
var response = $.evalJSON(responseText);
次にこのハッシュをフォームに適用するんだけど、ここでは、deserialize.jsというプラグインを使う。
Nothing found for Sandbox Jquery Testform
$('form-id').deserialize(response);
とすることで、簡単にハッシュの内容をフォームに適用してくれる。がつっと。きもちいい。
トラックバック - http://d.hatena.ne.jp/hiro_nemu/20090826/1251284397
リンク元
- 19 http://www.google.co.jp/search?hl=ja&client=firefox-a&rls=org.mozilla:ja:official&q=mod_ssl+apxs:Error:&btnG=検索&lr=lang_ja
- 14 http://www.google.co.jp/search?hl=ja&client=firefox-a&rls=com.ubuntu:ja:unofficial&hs=7Mj&q=NetworkManager&btnG=検索&lr=lang_ja
- 8 http://www.google.co.jp/search?sourceid=navclient&hl=ja&ie=UTF-8&rlz=1T4GGLT_ja___JP333&q=JQuery+dialog+form
- 6 http://www.google.co.jp/search?hl=ja&lr=lang_ja&client=firefox-a&rls=org.mozilla:ja:official&hs=ZJb&q=jquery+ajax&revid=607099906&ei=kRWVSoOnCtCGkQWM-uyMBQ&sa=X&oi=revisions_inline&resnum=0&ct=top-revision&cd=2
- 6 http://www.google.com/search?hl=ja&lr=lang_ja&ie=UTF-8&oe=UTF-8&q=display:none&num=50
- 4 http://d.hatena.ne.jp/unrocko/
- 4 http://www.google.co.jp/reader/view/?hl=ja&tab=wy
- 4 http://www.google.co.jp/search?client=firefox-a&rls=org.mozilla:ja:official&channel=s&hl=ja&source=hp&q=ubuntu+ruby&lr=&btnG=Google+検索
- 4 http://www.google.co.jp/search?hl=ja&safe=off&client=firefox-a&rls=org.mozilla:ja:official&num=20&newwindow=1&q=Flexigrid+seasar&btnG=検索&lr=lang_ja
- 4 http://www.google.co.jp/search?hl=ja&source=hp&q=tomcat+インストール&lr=&aq=0&oq=tomcat

実践で利用できそう。Thx!