RSSフィードを表示する
core. RSS2.0のフィード(XML)を非同期で取得して表示します。
<input type="button" value="GET" onclick="getFunc()"/>
<script>
function getFunc() {
dojo.xhrGet({
url: '/rss.xml',
handleAs: 'xml',
error: function(response, ioArgs){
console.error("HTTP status code:",ioArgs.xhr.status);
return response;
},
load: function(response) {
var html = "<ul>";
var items = dojo.query("item",response);
for(i=0; i<items.length; i++)
html += "<li>"+
dojo.query("title",items[i])[0].firstChild.nodeValue+"</li>";
dojo.byId("box").innerHTML = html+"</ul>";
}
});
}
</script>
<div id="box" style="border:1px solid gray"></div>
error, load のハンドラの最終行(return response;)は入れておいた方が良いようです。dojo.query で xml.getElementsById と同じ事が簡単にできます。
サンプル:
※やはりJavascriptではDOMは扱い難いです。JSONを使えば格段にパースも早く扱いやすいですので、JSONで提供されるデータがあれば迷わずそちらを選びましょう。
またこのサンプルはIE7で動作していません。これは、このブログのRSS(XML)のレスポンスヘッダが、ContentType: application/xml になっており、IEではこれを認識できないようです。text/xml であれば問題ないらしいですが、text/xmlは本来エンコーディング指定ができないので正しいとはいえません。
※上のように、xhrGetを使ったXMLの処理は色々と問題ああるので、dojox.data.XmlStore を使ったサンプル(こちら)を紹介しています。これを使うとXMLもスマートに扱えます。
