Pembaca RSS AJAX dan PHP
- Halaman Sebelumnya Carian Langsung AJAX
- Halaman Berikutnya AJAX Poll
Pembaca RSS digunakan untuk membaca Feed RSS.
RSS memungkinkan untuk menggulir berita dan pembaruan dengan cepat.
Pembaca RSS AJAX
Dalam contoh AJAX di bawah ini, kita akan menunjukkan penelengkap RSS, melalui yang berikut konten RSS diimpor ke halaman web tanpa memperbaharui halaman.
Pilih berita berlangganan RSS di daftar di bawah ini
Contoh ini termasuk tiga elemen:
- Formulir HTML sederhana
- JavaScript
- PHP 页面
Formulir HTML
Ini adalah halaman HTML. Ia mengandung formulir HTML sederhana dan tautan ke berkas JavaScript:
<html> <head> <script type="text/javascript" src="getrss.js"></script> </head> <body> <form> Pilih Feed RSS: <select onchange="showRSS(this.value)"> <option value="Google">Berita Google</option> <option value="MSNBC">Berita MSNBC</option> </select> </form> <p><div id="rssOutput"> <b>Berita Feed RSS akan disiarkan di sini.</b></div></p> </body> </html>
Pengertian contoh - Formulir HTML
Seperti yang anda lihat, halaman HTML atas mengandung formulir HTML sederhana yang mengandung kotak pilihan
Bagaimana formulir bekerja:
- Ketika pengguna memilih opsi di dropdown, peristiwa akan dijalankan
- Ketika peristiwa dijalankan, fungsi showRSS() akan dijalankan
Bawah formulir adalah satu <div> yang dinamakan "rssOutput". Ia digunakan sebagai penempatan data yang dikembalikan oleh fungsi showRSS().
JavaScript
Kod JavaScript disimpan di "getrss.js", ia disambungkan dengan dokumen HTML:
var xmlHttp function showRSS(str) { xmlHttp=GetXmlHttpObject() if (xmlHttp==null) { alert ("Browser tidak mendukung permintaan HTTP") kembalikan } 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"); } } kembalikan xmlHttp; }
Contoh penjelasan:
stateChanged() dan fungsi GetXmlHttpObject dengan Permintaan AJAX dan PHP 本节中的例子相同。
showRSS() 函数
每当在下拉框中选择选择时,该函数就会执行:
- 定义发送到服务器的 url (文件名)
- 将参数 (q) 添加到 url,参数内容是下拉框中的被选项
- 添加一个随机数,以防止服务器缓存文件
- 调用 GetXmlHttpObject 函数创建 XMLHTTP 对象,并告知该对象在触发一个改变时去执行 stateChanged 函数
- 通过给定的 url 打开 XMLHTTP
- 向服务器发送 HTTP 请求
PHP 页面
服务名为 "getrss.php" 的 JavaScript 调用的服务器页面是 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>"); } ?>
Contoh penjelasan:
Berlaku apabila pilihan dihantar daripada JavaScript:
- PHP cari feed RSS yang dipilih
- Buat objek XML DOM untuk feed RSS pilihan
- Cari dan keluarkan elemen daripada kanal RSS
- Lengkapkan elemen RSS yang pertama, kedua dan ketiga, dan keluarkan
- Halaman Sebelumnya Carian Langsung AJAX
- Halaman Berikutnya AJAX Poll