YPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.***w3.org/TR/REC-html40/loose.dtd">
PHP和AJAX的RSS阅读器
RSS阅读器是用来读取RSS信息
允许快速的RSS浏览新闻和更新
AJAX的RSS阅读器
在AJAX以下例子,我们将展示一个RSS阅读器的内容从RSS是载入网页无需刷新。
在HTML表单
这是HTML网页。它包含一个简单的HTML表格,并链接到一个JavaScript :
Select an RSS-Feed: Google News MSNBC News
例如解释-的H TML表单
正如你可以看到, HTML网页上面载有一个简单的HTML表单的下拉框。
作品的形式像这样:
事件触发时,用户选择一个选项在下拉框中
当事件触发的功能要求showRSS ( )被处决。
下面的形式是一个
var xmlHttp
function showRSS(str)
{
xmlHttp=GetXmlHttpObject()
if (xmlHttp==null)
{
alert ("Browser does not support HTTP Request")
return
}
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");
}
}
return xmlHttp;
}
例如解释
该stateChanged ( )和GetXmlHttpObject职能是一样的PHP的AJAX推荐的篇章。
该showRSS ( )函数
每一次的选择是选择在输入外地执行这一职能如下:
界定了网址(档)传送给服务器
添加一个参数( Q )的网址与选定的选项从下拉框中
添加一个随机数字,以防止服务器使用快取档案
吁请GetXmlHttpObject函数创建一个XMLHTTP物件,并讲述了对象执行的功能要求时stateChanged变化是触发
开幕XMLHTTP物件与特定网址。
发送一个HTTP请求到服务器
PHP页面
网页服务器要求的JavaScript代码是一个PHP文件名为“ getrss.php ” :
<?php //get the q parameter from URL $q=$_GET["q"];
//find out which feed was selected
if($q=="Google")
{
$xml=("http://news.*go*ogl*e.com/news?ned=us&topic=h&output=rss");
}
elseif($q=="MSNBC")
{
$xml=("http://rss.m*sn**bc.msn.com/id/3032091/device/rss/rss.xml");
}
$xmlDoc = new DOMDocument(); $xmlDoc->load($xml);
//get elements from ""
$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 ""
echo("");
echo("
");
echo($channel_desc . "
//get and output "" elements
$x=$xmlDoc->getElementsByTagName('item');
for ($i=0; $iitem($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 ("");
echo ("
");
echo ($item_desc . "