Exemple PHP - AJAX RSS Reader


Exemple PHP - AJAX RSS Reader

Un lecteur RSS est utilisé pour lire les flux RSS.

AJAX RSS Reader

L'exemple suivant montrera un lecteur RSS, où le flux RSS est chargé dans une page Web sans avoir à recharger:

Flux RSS seront listées ici ...

Exemple Explication - La page HTML

Quand un utilisateur sélectionne un flux RSS dans la liste déroulante ci-dessus, une fonction appelée "showResult ()" est exécuté. La fonction est déclenchée par l'"onchange" événement:
<html>
<head>
<script type="text/javascript">
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>
Le showResult () fait ce qui suit:
  • Vérifier si un flux RSS est sélectionné
  • Créer un objet XMLHttpRequest
  • Création de la fonction à exécuter lorsque la réponse du serveur est prêt
  • Envoyer la demande hors d'un fichier sur le serveur
  • Avis qu 'un paramètre (q) est ajouté à l'URL (avec le contenu de la liste déroulante)

Le fichier PHP

La page sur le serveur appelé par le code JavaScript ci-dessus est un fichier PHP appelé "getrss.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>");
  }
?>
Quand une demande d'un flux RSS est envoyé à partir du JavaScript, ce qui suit se produit:
  • Vérifiez qui se nourrissent a été sélectionné
  • Créer un nouveau objet XML DOM
  • Chargez le document RSS dans la variable xml
  • Extraire et des éléments de sortie de l'élément de canal
  • Extraire et éléments de sortie des éléments item

4 commentaires:

  1. With havin so much written content do you ever run into any issues of plagorism or copyright infringement?
    My site has a lot of exclusive content I've either written myself or outsourced but it seems a lot of it is popping it up all over the web without my permission. Do you know any ways to help reduce content from being ripped off? I'd truly
    appreciate it.
    refinishing hardwood floors

    Feel free to surf to my webpage - engineered hardwood floors
    My website: hardwood floor

    ReplyDelete
  2. I love your blog.. very nice colors & theme.
    Did you create this website yourself or did you hire someone to do it for you?
    Plz reply as I'm looking to design my own blog and would like to find out where u got this from. kudos

    Here is my homepage: zetaclear side effects

    ReplyDelete
  3. Good day! I just would like to give you a big thumbs up for the great information you've got right here on this post. I will be returning to your website for more soon.

    Here is my webpage ... housekeeping service

    ReplyDelete
  4. whoah this weblog is magnificent i love studying your articles.
    Keep up the good work! You understand, lots of individuals are looking round for
    this info, you could aid them greatly.
    laser hair removal in manhattan

    Also visit my web blog - totally free online credit report

    ReplyDelete

HELLO VISITORS THANKS FOR YOUR VISIT AND COMMENT