您现在的位置: 365建站网 > 建站教程 > PHP 教程 > PHP 和 AJAX RSS 阅读器

PHP 和 AJAX RSS 阅读器

此节有 186 人学习过     参与评论

RSS 阅读器用于阅读 RSS Feed。

RSS 允许对新闻和更新进行快速浏览。

AJAX RSS 阅读器

在下面的 AJAX 实例中,我们将演示一个 RSS 阅读器,通过它,来自 RSS 的内容在不进行刷新的情况下载入网页。

在下面的列表框中选择一个 RSS 新闻订阅

Select an RSS-Feed:

在此列出 RSS Feed。

本例包括三个元素:

  • 简单的 HTML 表单
  • JavaScript
  • PHP 页面

HTML 表单

这是 HTML 页面。它包含一个简单的 HTML 表单和执行一个 JavaScript 文件的链接:

</>code

  1. <html>
  2. <head>
  3. <script type="text/javascript" src="getrss.js"></script>
  4. </head>
  5. <body>
  6. <form>
  7. Select an RSS-Feed:
  8. <select onchange="showRSS(this.value)">
  9. <option value="Google">Google News</option>
  10. <option value="MSNBC">MSNBC News</option>
  11. </select>
  12. </form>
  13. <p><div id="rssOutput">
  14. <b>RSS Feed will be listed here.</b></div></p>
  15. </body>
  16. </html>

例子解释 - HTML 表单

正如您看到的,上面的 HTML 页面包含一个简单的 HTML 表单,其中带有一个下拉列表框。

表单是这样工作的:

  1. 当用户选择下拉框中的选项时,会触发一个事件
  2. 当事件触发时,执行 showRSS() 函数

表单下面是名为 "rssOutput" 的一个 <div>。它用作 showRSS() 函数所返回的数据的占位符。

JavaScript

JavaScript 代码存储在 "getrss.js" 中,它与 HTML 文档相连接:

</>code

  1. var xmlHttp
  2. function showRSS(str)
  3. {
  4. xmlHttp=GetXmlHttpObject()
  5. if (xmlHttp==null)
  6. {
  7. alert ("Browser does not support HTTP Request")
  8. return
  9. }
  10. var url="getrss.php"
  11. url=url+"?q="+str
  12. url=url+"&sid="+Math.random()
  13. xmlHttp.onreadystatechange=stateChanged
  14. xmlHttp.open("GET",url,true)
  15. xmlHttp.send(null)
  16. }
  17. function stateChanged()
  18. {
  19. if (xmlHttp.readyState==4 || xmlHttp.readyState=="complete")
  20. {
  21. document.getElementById("rssOutput")
  22. .innerHTML=xmlHttp.responseText
  23. }
  24. }
  25. function GetXmlHttpObject()
  26. {
  27. var xmlHttp=null;
  28. try
  29. {
  30. // Firefox, Opera 8.0+, Safari
  31. xmlHttp=new XMLHttpRequest();
  32. }
  33. catch (e)
  34. {
  35. // Internet Explorer
  36. try
  37. {
  38. xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
  39. }
  40. catch (e)
  41. {
  42. xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
  43. }
  44. }
  45. return xmlHttp;
  46. }

例子解释:

stateChanged() 和 GetXmlHttpObject 函数与 PHP 和 AJAX 请求 这一节中的例子相同。

showRSS() 函数

每当在下拉框中选择选择时,该函数就会执行:

  1. 定义发送到服务器的 url (文件名)
  2. 把参数 (q) 添加到 url,参数内容是下拉框中的被选项
  3. 添加一个随机数,以防止服务器缓存文件
  4. 调用 GetXmlHttpObject 函数来创建 XMLHTTP 对象,并告知该对象在触发一个改变时去执行 stateChanged 函数
  5. 通过给定的 url 来打开 XMLHTTP
  6. 把 HTTP 请求发动到服务器

PHP 页面

调用 JavaScript 代码的服务器页面是名为 "getrss.php" 的 PHP 文件:

</>code

  1. <?php
  2. //get the q parameter from URL
  3. $q=$_GET["q"];
  4. //find out which feed was selected
  5. if($q=="Google")
  6. {
  7. $xml=("http://news.google.com/news?ned=us&topic=h&output=rss");
  8. }
  9. elseif($q=="MSNBC")
  10. {
  11. $xml=("http://rss.msnbc.msn.com/id/3032091/device/rss/rss.xml");
  12. }
  13. $xmlDoc = new DOMDocument();
  14. $xmlDoc->load($xml);
  15. //get elements from "<channel>"
  16. $channel=$xmlDoc->getElementsByTagName('channel')->item(0);
  17. $channel_title = $channel->getElementsByTagName('title')
  18. ->item(0)->childNodes->item(0)->nodeValue;
  19. $channel_link = $channel->getElementsByTagName('link')
  20. ->item(0)->childNodes->item(0)->nodeValue;
  21. $channel_desc = $channel->getElementsByTagName('description')
  22. ->item(0)->childNodes->item(0)->nodeValue;
  23. //output elements from "<channel>"
  24. echo("<p><a href='" . $channel_link
  25. . "'>" . $channel_title . "</a>");
  26. echo("<br />");
  27. echo($channel_desc . "</p>");
  28. //get and output "<item>" elements
  29. $x=$xmlDoc->getElementsByTagName('item');
  30. for ($i=0; $i<=2; $i++)
  31. {
  32. $item_title=$x->item($i)->getElementsByTagName('title')
  33. ->item(0)->childNodes->item(0)->nodeValue;
  34. $item_link=$x->item($i)->getElementsByTagName('link')
  35. ->item(0)->childNodes->item(0)->nodeValue;
  36. $item_desc=$x->item($i)->getElementsByTagName('description')
  37. ->item(0)->childNodes->item(0)->nodeValue;
  38. echo ("<p><a href='" . $item_link
  39. . "'>" . $item_title . "</a>");
  40. echo ("<br />");
  41. echo ($item_desc . "</p>");
  42. }
  43. ?>

例子解释:

当一个选项从 JavaScript 发送时,会发生:

  1. PHP 找出哪个 RSS feed 被选中
  2. 为选中的 RSS feed 创建 XML DOM 对象
  3. 找到并输出来自 RSS 频道的元素
  4. 遍历前三个 RSS 项目中的元素,并进行输出

如对本文有疑问,请提交到交流论坛,广大热心网友会为你解答!! 点击进入论坛

发表评论 (186人查看0条评论)
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
昵称:
最新评论
------分隔线----------------------------
PHP 教程目录

快速入口

· 365软件
· 杰创官网
· 建站工具
· 网站大全

其它栏目

· 建站教程
· 365学习

业务咨询

· 技术支持
· 服务时间:9:00-18:00
365建站网二维码

Powered by 365建站网 RSS地图 HTML地图

copyright © 2013-2024 版权所有 鄂ICP备17013400号