2011/11/07

[JavaScript][Google Feed API]サーバーサイド処理なくfeedをゲット

ajaxを使って、外部feedを取得したいのですが、same-originポリシーでそれは無理。

で、解決策としてサーバーサイドを使う必要があるのですが、毎回、毎回、これだと面倒。

なんか方法がないかなーっと模索したところ、ありました。

Google Feed API

さっそく、iTunesランキングをゲットするコードを作りました。

<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8">
<script type="text/javascript"
  src="https://www.google.com/jsapi?key=IN_YOUR_KEY"></script>
<script type="text/javascript"
  src="https://ajax.googleapis.com/ajax/libs/jquery/1.5.1/jquery.min.js"></script>
<script type="text/javascript">
jQuery.extend({
  init:function(){
    var feed = new google.feeds.Feed(
        "http://itunes.apple.com/us/rss/topsongs/limit=100/xml"
    );
    feed.setNumEntries(100);
    feed.setResultFormat(google.feeds.Feed.JSON_FORMAT);
    feed.load(function(xml){
      console.log(xml)
    });
  }
});
google.load("feeds", "1");
google.setOnLoadCallback(jQuery.init);
</script>
</head>
<body>

</body>
</html>
実行した結果、取得できました。

ポイントは、setNumEntriesメソッドを使わないと、デフォルトで4件取得してしまうところ。

今回は、100件なので、setNumEntries(100)としました。

また返り値を、JSONにしたかったので、google.feeds.Feed.JSON_FORMATキーを引数としてsetResultFormat()にセットしました。

これで、サーバーサイド言語を使わずに、実装できるようになったので、より早くWEBページを作れそうです。

0 コメント:

コメントを投稿