Coding With Fun
Home Docker Django Node.js Articles Python pip guide FAQ Policy

PHP Instance AJAX RSS Reader


May 11, 2021 PHP


Table of contents


PHP Instance - AJAX RSS Reader


RSS is a format for describing and synchronizing website content and is currently the most widely used XML application.

RSS provides a technology platform for rapid information dissemination, making everyone a potential information provider.

RSS readers are used to read RSS feeds.


AJAX RSS reader

In the following example, we'll demonstrate an RSS reader through which content from RSS is loaded without refreshing the page:


RSS-feed will be listed here...

Instance Interpretation - HTML page

When a user selects an RSS-feed in the drop-down list above, a function named "showRSS()" is executed. The function is triggered by the "onchange" event:

<html>
 <head>
 <script>
 function showRSS(str)
 {
 if (str.length==0)
 { 
 document.getElementById("rssOutput").innerHTML="";
 return;
 }
 if (window.XMLHttpRequest)
 {// code for IE7+, Firefox, Chrome, Opera, Safari
 xmlhttp=new XMLHttpRequest();
 }
 else
 {// code for IE6, IE5
 xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
 }
 xmlhttp.onreadystatechange=function()
 {
 if (xmlhttp.readyState==4 && xmlhttp.status==200)
 {
 document.getElementById("rssOutput").innerHTML=xmlhttp.responseText;
 }
 }
 xmlhttp.open("GET","getrss.php?q="+str,true);
 xmlhttp.send();
 }
 </script>
 </head>
 <body>

 <form>
 <select onchange="showRSS(this.value)">
 <option value="">Select an RSS-feed:</option>
 <option value="Google">Google News</option>
 <option value="MSNBC">MSNBC News</option>
 </select>
 </form>
 <br>
 <div id="rssOutput">RSS-feed will be listed here...</div>
 </body>
 </html> 

The showRSS() function performs the following steps:

  • Check to see if an RSS-feed is selected
  • Create an XMLHttpRequest object
  • Create a function that executes when the server response is ready
  • Send a request to a file on the server
  • Note the parameters (q) added to the end of the URL (containing the contents of the pull-down list)

PHP file

The server page called by JavaScript above is a PHP file .php "getrss":

<?php
 //get the q parameter from URL
 $q=$_GET["q"];

 //find out which feed was selected
 if($q=="Google")
 {
 $xml=("http://news.google.com/news?ned=us&topic=h&output=rss");
 }
 elseif($q=="MSNBC")
 {
 $xml=("http://rss.msnbc.msn.com/id/3032091/device/rss/rss.xml");
 }

 $xmlDoc = new DOMDocument();
 $xmlDoc->load($xml);

 //get elements from "<channel>"
 $channel=$xmlDoc->getElementsByTagName('channel')->item(0);
 $channel_title = $channel->getElementsByTagName('title')
 ->item(0)->childNodes->item(0)->nodeValue;
 $channel_link = $channel->getElementsByTagName('link')
 ->item(0)->childNodes->item(0)->nodeValue;
 $channel_desc = $channel->getElementsByTagName('description')
 ->item(0)->childNodes->item(0)->nodeValue;

 //output elements from "<channel>"
 echo("<p><a href='" . $channel_link
 . "'>" . $channel_title . "</a>");
 echo("<br>");
 echo($channel_desc . "</p>");

 //get and output "<item>" elements
 $x=$xmlDoc->getElementsByTagName('item');
 for ($i=0; $i<=2; $i++)
 {
 $item_title=$x->item($i)->getElementsByTagName('title')
 ->item(0)->childNodes->item(0)->nodeValue;
 $item_link=$x->item($i)->getElementsByTagName('link')
 ->item(0)->childNodes->item(0)->nodeValue;
 $item_desc=$x->item($i)->getElementsByTagName('description')
 ->item(0)->childNodes->item(0)->nodeValue;

 echo ("<p><a href='" . $item_link
 . "'>" . $item_title . "</a>");
 echo ("<br>");
 echo ($item_desc . "</p>");
 }
 ?> 

When an RSS feed request is sent from JavaScript to a PHP file, it occurs:

  • Check which RSS feed is selected
  • Create a new XML DOM object
  • Load the RSS document in the xml variable
  • Extract and output the element from the channel element
  • Extract and output the element from the item element

Related tutorials

RSS tutorial