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.
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
The jQuery RSS Plugin Code
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 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.