Czytnik RSS AJAX w PHP
- Poprzednia strona Wyszukiwanie Live AJAX
- Następna strona Ankieta AJAX
Czytnik RSS jest używany do czytania kanałów RSS.
RSS pozwala na szybkie przeglądanie wiadomości i aktualizacji.
Czytnik RSS AJAX
W poniższym przykładzie AJAX, pokażemy czytnik RSS, który wczytuje zawartość RSS bez odświeżania strony.
Wybierz subskrypcję wiadomości RSS z poniższej listy
Ten przykład zawiera trzy elementy:
- Prosty formularz HTML
- JavaScript
- Strona PHP
Formularz HTML
To jest strona HTML. Zawiera prosty formularz HTML i link do wykonywania pliku 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>
Przykład wyjaśnienia - HTML formularz
Jak widać, powyższa strona HTML zawiera prosty formularz z rozwijanym menu.
Działanie formularza:
- Kiedy użytkownik wybiera opcję z rozwijanego menu, wywoływane jest zdarzenie
- Kiedy wywołuje się zdarzenie, wykonuje się funkcję showRSS()
Poniżej formularza znajduje się div o nazwie "rssOutput". Służy jako占位ник dla danych zwróconych przez funkcję showRSS().
JavaScript
Kod JavaScript przechowywany w "getrss.js", który jest połączeniem z dokumentem HTML:
var xmlHttp function showRSS(str) { xmlHttp = GetXmlHttpObject(); jeśli xmlHttp == null { alert("Przeglądarka nie obsługuje żądań HTTP"); zwróć; } 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() { jeśli xmlHttp.readyState == 4 lub 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"); } } zwróć xmlHttp; }
Przykład wyjaśnienia:
stateChanged() i funkcja GetXmlHttpObject z Żądania AJAX w PHP Przykład w tym rozdziale jest podobny.
Funkcja showRSS()
Funkcja ta jest wywoływana za każdym razem, gdy wybieramy element z rozwijanej listy:
- Definiowanie url (nazwy pliku) wysyłanego do serwera
- Dodanie parametrów (q) do url, zawierających wybrany element z rozwijanej listy
- Dodanie losowej liczby, aby zapobiec 缓存owanie pliku serwera
- Wywołanie funkcji GetXmlHttpObject do utworzenia obiektu XMLHTTP i poinformowanie go, aby wykonał funkcję stateChanged, gdy zostanie wywołany
- Otwieranie XMLHTTP poprzez podany url
- Wysyłanie żądania HTTP do serwera
Strona PHP
Strona serwerowa, która wywołuje kod JavaScript, to plik PHP o nazwie "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>"); } ?>
Przykład wyjaśnienia:
Kiedy opcja jest wysyłana z JavaScript, następuje:
- PHP znajduje, który kanał RSS został wybrany
- Utwórz obiekt XML DOM dla wybranego kanału RSS
- Znajdź i wyświetl elementy z kanałów RSS
- Przejdź przez elementy trzech pierwszych projektów RSS i wyświetl je
- Poprzednia strona Wyszukiwanie Live AJAX
- Następna strona Ankieta AJAX