Parsing a Twitter feed with jQuery requires two steps:
- building a server-side proxy to retrieve the feed
- using Ajax to parse the feed.
The proxy's code, written in PHP, is really simple:
tweets.php
<?php
header('Content-Type: text/xml');
$tweets = file_get_contents('http://twitter.com/statuses/user_timeline/120345723.rss');
echo $tweets;
?>
After this, we can use the $.get() method of jQuery to parse this file:
$(document).ready(function() {
$.get('tweets.php', function(data) {
var $items = $(data).find('item');
$items.each(function() {
var $item = $(this);
var $raw_title = $item.find('title').text();
var $title = $raw_title.replace('gabromanato:', '').replace(/http:.+/, '');
var $raw_date = $item.find('pubDate').text();
var $date = $raw_date.replace('+0000', '');
var $link = $item.find('link').text();
var html = $('<li></li>').html('<a href="'+$link+'">'+$title+'</a>'+ '<div class="pubdate">'+$date+'</div>');
html.appendTo('#tweets');
});
});
});
I did this because Ajax cannot fetch a resource located on another domain (this is called same domain policy), so we have to use a Proxy. You can see the final result here.