Ajax.Response.responseJSON
prototype.jsのAJAX機能には、レスポンスボティがJSONの場合、自動で解析を行う機能があります。
- AJAXリクエストのオプションで特に禁止されておらず(デフォルトは「実行する」)、レスポンスのContent-Typeが「application/json」の場合に自動解析が行われ、
- 結果が「Ajax.Response.responseJSON」に格納されます。
以下は、「Ajax.Response.responseJSON」にアクセスしてみるサンプルです。
<html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <script type="text/javascript" src="prototype.js"></script> <script> function main() { return new Ajax.Request("./test.cgi", { method: "GET", evalJSON : false, onSuccess : function( response ) { // response.responseJSONにパーズされた値が格納される。 $("out").innerHTML += response.responseJSON.value; } }); } </script> </head> <body onload="main();"> <div id="out"></div> </body> </html>
アクセス先のCGIは次のとおり。
#!/usr/local/bin/ruby -- require "cgi" cgi = CGI.new cgi.out( "application/json"){ # コンテントタイプを「"applicationt/json」にする。 '{value:"test"}' # JSONな文字列を返す。 }
こんな機能があるのかー。ちなみに、解析までしなくていいよーという場合は、オプションで「evalJSON:false」を設定しておくと無効化できます。
new Ajax.Request("./test.cgi", { method: "GET", evalJSON : false, // 自動解析を無効化。 onSuccess : function( response ) { .... } });