prototype, Sack of Ajaxと、ajax関連のjavascriptライブラリをここでは取り上げて来ましたが、大本命と言えるものが登場してきました。ajax mlで話題の、川崎さん作JKL.ParseXMLです。
使い方は川崎さんのサイトに詳しくありますので、ここでは説明しません。代わりに、このライブラリを使うと何がうれしいのか、語っちゃいます。
まず1点目。XMLをJavascriptのオブジェクトに変換してくれちゃうことですね。そのためのライブラリなので当たり前なのですが。でもこれって、ものすごく需要があると思うんですよね。
現在、様々なウェブ上のサービスがRESTベースのAPIを提供していますよね。で、そのAPIを利用したサイトというのもまた色々があるわけですが、これらのサイトはおそらく、RESTで取得したXMLを、サーバサイドで加工してHTMLに出力、という様な処理をしてることが多いんじゃないかと思います。で、これにajaxを加えようとすると、俺に考えつくのは、
という、どれもイマイチな方法ばかりなんですよ。これがJKL.ParseXMLを使うと、
ってことになります。ほんっと、すばらしいです。
で、2点目の良い点なのですが、xmlHttpRequestでデータを取得するルーチンがものすごく簡単に書ける、ということですね。どれぐらい簡単か、Sack of Ajaxで説明したのと同様に、prototypeやSackと比較してみます。
前と同じ例ですが、まずはprototypeのコード。
new Ajax.Request( '/deislde/index.cgi', { method: 'GET', onComplete: function(request){ eval('tagsListObj = ' + request.responseText); displayTags(); } });
次にSackでのコード。(Sack of Ajaxでのサンプルは微妙に間違ってます。こっちが正しいです。)
ajax = new sack('/delside/index.cgi'); ajax.method = 'GET'; ajax.onCompletion = function() { var response = ajax.response; eval('tagsListObj = ' + response); displayTags(); }; ajax.runAjax();
これをJKL.ParseXMLで書き直すと、
var url = "/delside/index.cgi"; var xml = new JKL.ParseXML( url ); var tagsListObj = xml.parse(); displayTags();
といった感じで、ものすごく簡略化できます。しかも、しかもですよ、簡略化されるのはJavascriptだけではありません。prototypeとSackでは、サーバ側でXMLをJSONに変換しているのですが、JKL.ParseXMLはそれすらも不要!XMLのまんまでJavascriptに渡してやればいいんです。素敵です。
今ちょうど、作りかけのajaxアプリがあるので、早速使わせて頂きます。川崎さん、ありがとうございます!
俺も人が作ったものばかり使ってないで、こういうものを提供できるようにならないとなぁ。