tutorial pengembangan web terbaru
 

PHP Contoh - AJAX RSS Reader


Sebuah Pembaca RSS digunakan untuk membaca RSS Feed.


AJAX RSS Reader

Contoh berikut akan menunjukkan pembaca RSS, di mana RSS feed dimuat ke dalam halaman web tanpa reload:


RSS-feed akan tercantum di sini ...

Contoh Dijelaskan - The HTML Halaman

Bila pengguna memilih RSS-feed dalam daftar dropdown di atas, fungsi yang disebut " showRSS() " dijalankan. Fungsi ini dipicu oleh "onchange" acara:

<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="NBC">NBC News</option>
</select>
</form>
<br>
<div id="rssOutput">RSS-feed will be listed here...</div>
</body>
</html>

The showRSS() fungsi melakukan hal berikut:

  • Periksa apakah RSS feed dipilih
  • Membuat objek XMLHttpRequest
  • Buat fungsi yang akan dijalankan ketika respon server siap
  • Kirim permintaan off ke file di server
  • Perhatikan bahwa parameter (q) ditambahkan ke URL (dengan isi dari daftar dropdown)

PHP Berkas

Halaman pada server yang disebut oleh JavaScript di atas adalah file PHP yang disebut "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=="NBC") {
  $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>");
}
?>

Ketika permintaan untuk RSS feed dikirim dari JavaScript, berikut ini terjadi:

  • Memeriksa umpan terpilih
  • Membuat objek XML DOM baru
  • Memuat dokumen RSS dalam variabel xml
  • Ekstrak dan output elemen dari elemen saluran
  • Ekstrak dan output unsur dari unsur-unsur barang