読者です 読者をやめる 読者になる 読者になる
無料で使えるシステムトレードフレームワーク「Jiji」 をリリースしました!

・OANDA Trade APIを利用した、オープンソースのシステムトレードフレームワークです。
・自分だけの取引アルゴリズムで、誰でも、いますぐ、かんたんに、自動取引を開始できます。

Ajax.Response.responseJSON

prototype.jsAJAX機能には、レスポンスボティが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 ) {
    ....
  }
});