पीएचपी और एज़ीएक्स RSS रीडर

RSS रीडर को RSS Feed पढ़ने के लिए उपयोग किया जाता है。

RSS न्यूज़ और अपडेट को त्वरित देखने के लिए अनुमति देता है。

AJAX RSS रीडर

इस एक्जेम्पल में, हम एक AJAX RSS रीडर दिखाएंगे, जिससे RSS से आने वाला सामग्री फ़्रीज़ नहीं होकर वेब पृष्ठ में लोड होगा。

नीचे की लिस्ट बॉक्स से एक RSS समाचार सबस्क्रिप्शन चुनें

एक RSS-Feed चुनें:

यहाँ RSS Feed दिखाया जाएगा。

इसमें तीन तत्व हैं:

  • साधारण HTML फॉर्म
  • JavaScript
  • PHP पृष्ठ

HTML फॉर्म

यह HTML पृष्ठ है। यह एक साधारण HTML फॉर्म और एक JavaScript फ़ाइल के लिंक को शामिल करता है:

<html>
<head>
<script type="text/javascript" src="getrss.js"></script>
</head>
<body>
<form> 
Select an RSS-Feed:
<select onchange="showRSS(this.value)">
<option value="Google">Google News</option>
<option value="MSNBC">MSNBC News</option>
</select>
</form>
<p><div id="rssOutput">
<b>RSS Feed will be listed here.</b></div></p>
</body>
</html>

उदाहरण स्पष्टीकरण - HTML फॉर्म

जैसा कि आपको दिखाया गया है, ऊपरी HTML पृष्ठ में एक साधारण HTML फॉर्म है, जिसमें एक ड्रॉपडाउन लिस्ट बॉक्स है.

फॉर्म के काम करना यह है:

  1. जब उपयोगकर्ता ड्रॉपडाउन में विकल्प चुनता है, तो एक इवेंट ट्रिगर होता है
  2. जब इवेंट ट्रिगर होता है, showRSS() फ़ंक्शन चलाया जाता है

फॉर्म के नीचे "rssOutput" नामक एक <div> है. यह showRSS() फ़ंक्शन द्वारा प्राप्त डाटा के प्लेसहोल्डर के रूप में प्रयोग किया जाता है.

JavaScript

JavaScript कोड "getrss.js" में संग्रहित है, जो HTML दस्तावेज़ से जुड़ा है:

var xmlHttp
function showRSS(str)
 { 
 xmlHttp=GetXmlHttpObject()
 if (xmlHttp==null)
  {
  alert ("Browser does not support HTTP Request")
  return
  }
 var url="getrss.php"
 url=url+"?q="+str
 url=url+"&sid="+Math.random()
 xmlHttp.onreadystatechange=stateChanged 
 xmlHttp.open("GET",url,true)
 xmlHttp.send(null)
 }
function stateChanged() 
 { 
 if (xmlHttp.readyState==4 || xmlHttp.readyState=="complete")
  { 
  document.getElementById("rssOutput")
  .innerHTML=xmlHttp.responseText 
  } 
 }
function GetXmlHttpObject()
{
var xmlHttp=null;
try
 {
 // Firefox, Opera 8.0+, Safari
 xmlHttp=new XMLHttpRequest();
 }
catch (e)
 {
 // Internet Explorer
 try
  {
  xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
  }
 catch (e)
  {
  xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
  }
 }
return xmlHttp;
}

उदाहरण व्याख्या:

stateChanged() और GetXmlHttpObject फ़ंक्शन से पीएचपी और एज़ीएक्स रिक्वेस्ट इस अनुच्छेद में के उदाहरण एक-सी हैं।

showRSS() फ़ंक्शन

जब ड्रॉपडाउन में चयन किया जाता है तो इस फ़ंक्शन को चलाया जाता है:

  1. सर्वर पर भेजे जाने वाले URL (फ़ाइल नाम) निर्धारित करें
  2. पैरामीटर (q) जोड़ें, उसका वाल्यू ड्रॉपडाउन में चयन किए गए वाले अपने है
  3. एक अनावश्यक संख्या जोड़ें, ताकि सर्वर का फ़ाइल कैश ना हो
  4. GetXmlHttpObject फ़ंक्शन को बुलाकर XMLHTTP ऑब्जेक्ट बनाएं और यह ऑब्जेक्ट को सूचित करें कि वह stateChanged फ़ंक्शन को जब एक परिवर्तन हो तो चलाएं
  5. दिए गए URL के द्वारा XMLHTTP खोलें
  6. सर्वर पर HTTP अनुरोध भेजें

PHP पृष्ठ

सेवा प्रदान करने वाले जेसक शीर्षक "getrss.php" है वह PHP फ़ाइल है:

<?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>");
 }
?>

उदाहरण व्याख्या:

जब एक विकल्प जावास्क्रिप्ट से भेजा जाता है तो यह होता है:

  1. PHP खोजे कि कौन सा RSS फ़ीड चयनित है
  2. चयनित RSS फ़ीड के लिए XML DOM ऑब्जेक्ट बनाएं
  3. RSS फ़ीड से एलिमेंट खोजें और उन्हें आउटपुट करें
  4. पहले तीन RSS प्रोजेक्ट के एलिमेंट को परिभाषित करें और उन्हें आउटपुट करें