Easy Tutorial
❮ Func Array Diff Uassoc Func Math Base Convert ❯

PHP Example - AJAX RSS Reader


RSS readers are used to read RSS feeds.


AJAX RSS Reader

In the following example, we will demonstrate an RSS reader that loads content from RSS feeds without refreshing the webpage:


Example Explanation - HTML Page

When a user selects an RSS feed from the dropdown list above, a function called "showRSS()" is executed. This function is triggered by the "onchange" event:

Example

<html>
<head>
<meta charset="utf-8">
<title>tutorialpro.org(tutorialpro.org)</title>
<script>
function showRSS(str)
{
    if (str.length==0)
    { 
        document.getElementById("rssOutput").innerHTML="";
        return;
    }
    if (window.XMLHttpRequest)
    {
        // IE7+, Firefox, Chrome, Opera, Safari browsers execute code
        xmlhttp=new XMLHttpRequest();
    }
    else
    {
        // IE6, IE5 browsers execute code
        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="rss">Read RSS Data</option>
</select>
</form>
<br>
<div id="rssOutput">RSS-feed data list...</div>
</body>
</html>

The showRSS() function performs the following steps:


PHP File

The file rss_demo.xml.

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

Example

<?php
// rss file
$xml="rss_demo.xml";

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

// Read 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>&lt;a href='" . $channel_link
  . "'>" . $channel_title . "</a>");
echo("<br>");
echo($channel_desc . "</p>");

// 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>&lt;a href='" . $item_link
    . "'>" . $item_title . "</a>");
    echo ("<br>");
    echo ($item_desc . "</p>");
}
?>
echo($channel_desc . "</p>");

// Output elements from "<item>"
$x = $xmlDoc->getElementsByTagName('item');
for ($i = 0; $i <= 1; $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>&lt;a href='" . $item_link
        . "'>" . $item_title . "</a>");
    echo ("<br>");
    echo ($item_desc . "</p>");
}
?>

When the RSS feed request is sent from JavaScript to the PHP file, the following occurs:

❮ Func Array Diff Uassoc Func Math Base Convert ❯