XMLとJavaScriptオブジェクトの変換

とりあえず、SjaxでのAPIアクセスを汎用的にすべく、APIのレスポンスを連想配列のオブジェクトで返す関数を書く。

XMLをJavaScriptオブジェクトに変換するために[JSAN] XML.ObjTree – XML~JavaScriptオブジェクト変換クラスを使ってみることにした。

accessToAPIwithSjax : function(method, objParams) {
  // SjaxでAPIにリクエスト
  objParams['Method'] = method;
  var myAjax = new Ajax.Request(
    '/api/',
    {
      method: 'post',
      parameters: $H(objParams).toQueryString(),
      asynchronous: false
    }
  );
  var respXml = myAjax.transport.responseXML;
  var xotree = new XML.ObjTree();
  var data = xotree.parseDOM( respXml.childNodes[1] );
  return data;
},

エラーチェックとかはしてないけど。

var result = accessToAPIwithSjax('GetHogehoge', { param1: 'foo', param2: 'bar' });
alert(result.DocRoot.status);

みたいな感じで使える。ボタン押した時のイベントとかで、同期モードアクセスは便利。


新しく会社作りました!

コメントをどうぞ