My favorites | Sign in
Logo
                
Search
for
Updated Feb 16, 2009 by nakajiman1
Labels: jQuery.ajax, jQuery.get, jQuery.getFeed
AjaxFeed  
jQuery.ajax を使って Atom や RSS 2.0 のフィードを取得できます。jQuery.get や jQuery.getFeed のショートカットも使えます。

Atom フィードを取得する

jQuery.ajax を使って、Atom フィードを取得できます。このとき url にフィードの URL と dataType に feed を指定します。

  $.ajax({
    url: 'http://rss.rssad.jp/rss/gihyo/feed/atom',
    data: {},
    dataType: 'feed',
    success: function(feed) {
      console.info(feed.URL);
      console.info(feed.Link);
      console.info(feed.Title);
      console.info(feed.Description);
      console.info(feed.Author);
      $.each(feed.Entry, function(i, entry) {
        console.info(entry.Link);
        console.info(entry.Title);
        // console.info(entry.Summary);
        console.info(entry.Date);
	var date = new Date();
	date.setTime(entry.Date);
	console.info(date.toLocaleString());
      });
    },
    error: function(xhr, status, e) {
      console.info(xhr, status, e);
    }
  });

また jQuery.get を使っても同じことができます。

  $.get('http://rss.rssad.jp/rss/gihyo/feed/atom', {}, function(feed) {}, 'feed');

さらに jQuery.getFeed を使っても同じことができます。

  $.getFeed('http://rss.rssad.jp/rss/gihyo/feed/atom', {}, function(feed) {});

RSS 2.0 フィードを取得する

jQuery.ajax を使って、RSS 2.0 フィードを取得できます。このとき url にフィードの URL と dataType に feed を指定します。

  $.ajax({
    url: 'http://rss.rssad.jp/rss/gihyo/feed/rss2',
    data: {},
    dataType: 'feed',
    success: function(feed) {
      console.info(feed.URL);
      console.info(feed.Link);
      console.info(feed.Title);
      console.info(feed.Description);
      console.info(feed.Author);
      $.each(feed.Entry, function(i, entry) {
        console.info(entry.Link);
        console.info(entry.Title);
        // console.info(entry.Summary);
        console.info(entry.Date);
	var date = new Date();
	date.setTime(entry.Date);
	console.info(date.toLocaleString());
      });
    },
    error: function(xhr, status, e) {
      console.info(xhr, status, e);
    }
  });

また jQuery.get を使っても同じことができます。

  $.get('http://rss.rssad.jp/rss/gihyo/feed/rss2', {}, function(feed) {}, 'feed');

さらに jQuery.getFeed を使っても同じことができます。

  $.getFeed('http://rss.rssad.jp/rss/gihyo/feed/rss2', {}, function(feed) {});

フィードの構造と項目

Atom や RSS 2.0 などフィードの形式が異なっても、取得するフィードの構造と項目は同じになります。

Feed フィードのオブジェクト
Feed.URL フィード自体の URL
Feed.Link フィードの URL
Feed.Title フィードのタイトル
Feed.Description フィードの説明
Feed.Author フィードの著者
Feed.Entry エントリのオブジェクト
Feed.Entry.Link エントリの URL
Feed.Entry.Title エントリのタイトル
Feed.Entry.Summary エントリの要約
Feed.Entry.Date エントリの日時 -- UNIX TIMESTAMP ミリ秒


Comment by atsn.ngs, Feb 08, 2009

はじめまして。長瀬です。 Partuzaの場合、Dateプロパティーは秒数なので、 var date = new Date(entry.Date*1000); としないとだめですね。

ほかのコンテナはわかりませんが。

失礼しました。

Comment by nakajiman1, Feb 09, 2009

なかじまんです。コメントありがとうございます。Partuza だと Shindig は PHP 版ですね。iGoogle や Orkut は ms 単位になっています。なので、Shindig PHP 側で対応すべきものでしょう。周りの識者にも聞いてみますね。

Comment by nakajiman1, Feb 09, 2009

Shindig Java はミリ秒単位、Shindig PHP (Patruza) は秒単位というのが現状です。opensocial-jquery では Shindig PHP のとき、内部でミリ秒単位に変換できないか検討してみます。できるかな?

Comment by nakajiman1, Feb 16, 2009

Patruza (Shindig PHP) は秒単位の件、0.5.1 で対応しました。32bit(2^32)未満のときは秒表現であるとみなして×1000しています。1970年の1月や2月だと誤認することになりますが、そのようなエントリの日時はありえないという妥協が条件です。


Sign in to add a comment
Hosted by Google Code