wiss inc

WISS inc.

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もスマートに扱えます。

TITLE