jQuery Get RSS Feed Live Reader

Share this article

Use jQuery get rss (with JavaScript) to get a blogs (or websites) display rss feed on your web page. Use Google Ajax Feed API to retrieve the feed items and returns them as a list of feed items to be displayed. The feed can then be customized with your styles to suit your look – for example it could be used as a jQuery news aggregator.

Real World Demo

jQuery RSS Plugin Features

  • Automatically load rss feed when your web page loads
  • Refresh button to refresh the jQuery rss feed reader live
  • You can add mutiple rss feeds
  • You can specify a limit of feed items that are returned
  • Displays a loading button while reading rss feeds
jquery-blog-rss-feed
Download Source Files

The jQuery RSS Plugin Code

The jQuery RSS Plugin mainly uses JavaScript to call google.load(feed) to get the rss feed items.
var gfeedfetcher_loading_image="/images/page-images/loader.gif" //Full URL to "loading" image. No need to config after this line!!

google.load("feeds", "1") //Load Google Ajax Feed API (version 1)

function gfeedfetcher(divid, divClass, linktarget){
	this.linktarget=linktarget || "" //link target of RSS entries
	this.feedlabels=[] //array holding lables for each RSS feed
	this.feedurls=[]
	this.feeds=[] //array holding combined RSS feeds' entries from Feed API (result.feed.entries)
	this.feedsfetched=0 //number of feeds fetched
	this.feedlimit=5
	this.showoptions="" //Optional components of RSS entry to show (none by default)
	this.sortstring="date" //sort by "date" by default
	document.write('') //output div to contain RSS entries
	this.feedcontainer=document.getElementById(divid)
	this.itemcontainer="" //default element wrapping around each RSS entry item
}

gfeedfetcher.prototype.addFeed=function(label, url){
	this.feedlabels[this.feedlabels.length]=label
	this.feedurls[this.feedurls.length]=url
}

gfeedfetcher.prototype.filterfeed=function(feedlimit, sortstr){
	this.feedlimit=feedlimit
	if (typeof sortstr!="undefined")
	this.sortstring=sortstr
}

gfeedfetcher.prototype.displayoptions=function(parts){
	this.showoptions=parts //set RSS entry options to show ("date, datetime, time, snippet, label, description")
}

gfeedfetcher.prototype.setentrycontainer=function(containerstr){  //set element that should wrap around each RSS entry item
this.itemcontainer="< "+containerstr.toLowerCase()+">"
}

gfeedfetcher.prototype.init=function(){
	this.feedsfetched=0 //reset number of feeds fetched to 0 (in case init() is called more than once)
	this.feeds=[] //reset feeds[] array to empty (in case init() is called more than once)
	this.feedcontainer.innerHTML=' Loading blog feeds...'
	var displayer=this
	for (var i=0; i0 && this.feedlimit>this.feedurls.length && i==this.feedurls.length-1) //If this is the last RSS feed, and feedlimit/feedurls.length yields a remainder
			items_to_show+=(this.feedlimit%this.feedurls.length) //Add that remainder to the number of entries to show for last RSS feed
		feedpointer.setNumEntries(items_to_show) //set number of items to display
		feedpointer.load(function(label){
			return function(r){
				displayer._fetch_data_as_array(r, label)
			}
		}(this.feedlabels[i])) //call Feed.load() to retrieve and output RSS feed.
	}
}


gfeedfetcher._formatdate=function(datestr, showoptions){
	var itemdate=new Date(datestr)
	var parseddate=(showoptions.indexOf("datetime")!=-1)? itemdate.toLocaleString() : (showoptions.indexOf("date")!=-1)? itemdate.toLocaleDateString() : (showoptions.indexOf("time")!=-1)? itemdate.toLocaleTimeString() : ""
	return ""+parseddate+""
}

gfeedfetcher._sortarray=function(arr, sortstr){
	var sortstr=(sortstr=="label")? "ddlabel" : sortstr //change "label" string (if entered) to "ddlabel" instead, for internal use
	if (sortstr=="title" || sortstr=="ddlabel"){ //sort array by "title" or "ddlabel" property of RSS feed entries[]
		arr.sort(function(a,b){
		var fielda=a[sortstr].toLowerCase()
		var fieldb=b[sortstr].toLowerCase()
		return (fieldafieldb)? 1 : 0
		})
	}
	else{ //else, sort by "publishedDate" property (using error handling, as "publishedDate" may not be a valid date str if an error has occured while getting feed
		try{
			arr.sort(function(a,b){return new Date(b.publishedDate)-new Date(a.publishedDate)})
		}
		catch(err){}
	}
}

gfeedfetcher.prototype._fetch_data_as_array=function(result, ddlabel){	
	var thisfeed=(!result.error)? result.feed.entries : "" //get all feed entries as a JSON array or "" if failed
	if (thisfeed==""){ //if error has occured fetching feed
		alert("Some blog posts could not be loaded: "+result.error.message)
	}
	for (var i=0; i")? "n" : ""
	gfeedfetcher._sortarray(feeds, this.sortstring)
	for (var i=0; i" + feeds[i].title + ""
		var itemlabel=/label/i.test(this.showoptions)? '['+this.feeds[i].ddlabel+']' : " "
		var itemdate=gfeedfetcher._formatdate(feeds[i].publishedDate, this.showoptions)
		var itemdescription=/description/i.test(this.showoptions)? ""+feeds[i].content : /snippet/i.test(this.showoptions)? ""+feeds[i].contentSnippet  : ""
		rssoutput+=this.itemcontainer + itemtitle + " " + itemlabel + " " + itemdate + "n" + itemdescription + this.itemcontainer.replace("< ", "") + "nn"
	}
	rssoutput+=(this.itemcontainer=="")? "" : ""
	this.feedcontainer.innerHTML=rssoutput
}

HTML Code



var newsfeed=new gfeedfetcher("rssfeeds", "rssfeedsclass", "_new")
newsfeed.addFeed("JQUERY BLOG", "http://www.jquery4u.com/feed/");
newsfeed.addFeed("BLOGOOLA's Blog", "http://blogoola.com/blog/feed/");
newsfeed.displayoptions("label datetime snippet");
newsfeed.setentrycontainer("p");
newsfeed.filterfeed(10, "date");
newsfeed.init();

Refresh live blog posts

CSS Code

/** RSS FEED **/
.labelfield{ color:brown; font-size: 90%; }
.datefield{ color:gray; font-size: 90%;}
#rssfeeds a{ color: purple;text-decoration: none;font-weight: bold;}
#rssfeeds p{ margin-bottom: 2px;}
code{ color: red;}
#blogoolafeed, #blogoolafeed a { color:white; }
#blogoolafeed a:hover{ color:#8E7BD3; }
#blogoolafeed ul { margin-left:-15px }
#rssfeed-wrap { text-align:left; margin-left:15px; }
Plugin source: http://www.dynamicdrive.com

Frequently Asked Questions (FAQs) about jQuery RSS Feed Display

How can I use jQuery to display an RSS feed on my website?

To display an RSS feed on your website using jQuery, you need to first include the jQuery library in your HTML file. Then, you can use the $.ajax() method to fetch the RSS feed data. You can parse this data using the $.parseXML() method and then use jQuery’s DOM manipulation methods to display the feed on your website. Remember to handle any errors that might occur during the AJAX request.

What is the role of AJAX in displaying RSS feeds?

AJAX, which stands for Asynchronous JavaScript and XML, is used to fetch the RSS feed data from the server without having to refresh the entire page. This makes the user experience smoother and more seamless. AJAX can fetch data in various formats, including XML, which is commonly used for RSS feeds.

How can I handle errors when fetching RSS feeds using jQuery?

When using the $.ajax() method to fetch RSS feed data, you can handle errors by defining a function in the ‘error’ property of the options object. This function will be called if the AJAX request fails for any reason. You can display a user-friendly error message or take other appropriate action.

Can I style the RSS feed data displayed on my website?

Yes, you can style the RSS feed data displayed on your website using CSS. After you have parsed the RSS feed data and added it to your HTML using jQuery, you can use CSS to style the elements as you wish. This can include changing the font, color, size, and other properties.

How can I refresh the RSS feed data on my website?

To refresh the RSS feed data on your website, you can set up a timer using the setInterval() function in JavaScript. This function can call the AJAX request at regular intervals, fetching the latest RSS feed data and updating the display on your website.

Can I display multiple RSS feeds on my website?

Yes, you can display multiple RSS feeds on your website. You would need to make separate AJAX requests for each RSS feed. You can then parse and display the data from each feed in separate sections of your website.

How can I filter the RSS feed data displayed on my website?

You can filter the RSS feed data displayed on your website by using the filter() method in jQuery. This method creates a new array with all elements that pass a test implemented by the provided function. You can use this method to filter the RSS feed data based on your criteria.

Can I use jQuery to display RSS feeds on a mobile website?

Yes, you can use jQuery to display RSS feeds on a mobile website. jQuery is a cross-platform JavaScript library, which means it works on various platforms including mobile devices. The process of fetching, parsing, and displaying the RSS feed data would be the same.

How can I make the RSS feed display responsive?

To make the RSS feed display responsive, you can use CSS media queries. These allow you to apply different styles depending on the size of the device viewing the website. You can adjust the layout, size, and other properties of the RSS feed display to make it look good on all devices.

Can I use jQuery to display RSS feeds from different domains?

Yes, you can use jQuery to display RSS feeds from different domains. However, due to the same-origin policy in web browsers, you might run into issues when trying to fetch data from a different domain. To overcome this, you can use a server-side proxy or a CORS-enabled service.

Sam DeeringSam Deering
View Author

Sam Deering has 15+ years of programming and website development experience. He was a website consultant at Console, ABC News, Flight Centre, Sapient Nitro, and the QLD Government and runs a tech blog with over 1 million views per month. Currently, Sam is the Founder of Crypto News, Australia.

jQuery
Share this article
Read Next
Get the freshest news and resources for developers, designers and digital creators in your inbox each week