WebjxCom提示:RSS阅读器用于阅读RSSFeed
。RSS允许对新闻和更新进行快速浏览
。    RSS阅读器用于阅读RSSFeed。  
  RSS允许对新闻和更新进行快速浏览。  
  AJAXRSS阅读器  
  在下面的AJAX实例中
,我们将演示一个RSS阅读器
,通过它,来自RSS的内容在不进行刷新的情况下载入网页。  
  在下面的列表框中选择一个RSS新闻订阅  
  SelectanRSS-Feed:GoogleNewsMSNBCNews  
  在此列出RSSFeed。  
  本例包括三个元素:  
  简单的HTML表单  
  JavaScript    
PHP页面  
  HTML表单  
  这是HTML页面。它包含一个简单的HTML表单和执行一个JavaScript文件的链接:  
  <html>  
  <head>  
  <scripttype="text/javascript"src="getrss.js"></script>  
  </head>  
  <body>  
  <form>  
  SelectanRSS-Feed:  
  <selectonchange="showRSS(this.value)">  
  <optionvalue="Google">GoogleNews</option>  
  <optionvalue="MSNBC">MSNBCNews</option>  
  </select>  
  </form>  
  <p><divid="rssOutput">  
  <b>RSSFeedwillbelistedhere.</b></div></p>  
  </body>  
  </html>  
  例子解释-HTML表单  
  正如您看到的,上面的HTML页面包含一个简单的HTML表单,其中带有一个下拉列表框。  
  表单是这样工作的:  
  当用户选择下拉框中的选项时,会触发一个事件  
  当事件触发时,执行showRSS()函数  
  表单下面是名为"rssOutput"的一个<div>。它用作showRSS()函数所返回的数据的占位符。  
  JavaScript  
  JavaScript代码存储在"getrss.js"中,它与HTML文档相连接:  
  varxmlHttp  
  functionshowRSS(str)  
  {  
  xmlHttp=GetXmlHttpObject()  
  if(xmlHttp==null)  
  {  
  alert("BrowserdoesnotsupportHTTPRequest")  
  return  
  }  
  varurl="getrss.php"  
  url=url+"?q="+str  
  url=url+"&sid="+Math.random()  
  xmlHttp.onreadystatechange=stateChanged  
  xmlHttp.open("GET",url,true)  
  xmlHttp.send(null)  
  }  
  functionstateChanged()  
  {  
  if(xmlHttp.readyState==4||xmlHttp.readyState=="complete")  
  {  
  document.getElementById("rssOutput")  
  .innerHTML=xmlHttp.responseText  
  }  
  }  
  functionGetXmlHttpObject()  
  {  
  varxmlHttp=null;  
  try  
  {  
  //Firefox,Opera8.0+,Safari  
  xmlHttp=newXMLHttpRequest();  
  }  
  catch(e)  
  {  
  //InternetExplorer  
  try  
  {  
  xmlHttp=newActiveXObject("Msxml2.XMLHTTP");  
  }  
  catch(e)  
  {  
  xmlHttp=newActiveXObject("Microsoft.XMLHTTP");  
  }  
  }  
  returnxmlHttp;  
  }  
  例子解释:  
  stateChanged()和GetXmlHttpObject函数与
PHP和AJAX请求这一节中的例子相同。  
  showRSS()函数  
  每当在下拉框中选择选择时,该函数就会执行:  
  定义发送到
服务器的url(文件名)  
  把参数(q)添加到url,参数内容是下拉框中的被选项  
  添加一个随机数,以防止
服务器缓存文件  
  调用GetXmlHttpObject函数来创建XMLHTTP对象,并告知该对象在触发一个改变时去执行stateChanged函数  
  通过给定的url来打开XMLHTTP  
  把HTTP请求发动到服务器  
  PHP页面  
  调用JavaScript代码的服务器页面是名为"getrss.php"的PHP文件:  
  <?php  
  //gettheqparameterfromURL  
  $q=$_GET["q"];  
  //findoutwhichfeedwasselected  
  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=newDOMDocument();  
  $xmlDoc->load($xml);  
  //getelementsfrom"<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;  
  //outputelementsfrom"<channel>"  
  echo("<p><ahref='".$channel_link  
  ."'>".$channel_title."</a>");  
  echo("<br/>");  
  echo($channel_desc."</p>");  
  //getandoutput"<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><ahref='".$item_link  
  ."'>".$item_title."</a>");  
  echo("<br/>");  
  echo($item_desc."</p>");  
  }  
  ?>  
  例子解释:  
  当一个选项从JavaScript发送时,会发生:  
  PHP找出哪个RSSfeed被选中  
  为选中的RSSfeed创建XMLDOM对象  
  找到并输出来自RSS频道的元素  
  遍历前三个RSS项目中的元素,并进行输出