加入收藏 | 设为首页 | 会员中心 | 我要投稿 焦作站长网 (https://www.0391zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

利用PHP和AJAX创建RSS聚合器的代码

发布时间:2020-03-16 20:21:14 所属栏目:PHP教程 来源:互联网
导读:利用PHP和AJAX创建RSS聚合器的代码


<? 
if($password == "mypassword") 

 require_once('classes/RSS.class.php'); 
 $rss = new RSS(); 
 echo $rss->get($request); 

else 

 echo "You are an unauthorized user"; 

?>  


  GET/POST与AJAX相结合
  为了POST请求,我们首先需要创建该请求对象。如果你没有创建请求对象的经验,那么可以读一下我的文章《How To Use AJAX》或简单地研究一下本文的示例源代码。一旦创建该请求对象,就可以调用sendFeed方法并传递由表单所创建的URL:

复制代码 代码如下:


function sendFeed(url){ 
 post.onreadystatechange = sendRequest; 
 post.open("POST", url, true); 
 post.send(url); 

  一旦收到来自于PHP对象的响应并被正确加载,则对与该响应相应的本地文件发出另一个请求。在这种情况中,post.responseText提供给我们该新文件的路径: 
function sendRequest(){ 
 if(checkReadyState(post)){ 
  request = createRequestObject(); 
  request.onreadystatechange = onResponse; 
  request.open("GET", post.responseText, true); 
  request.send(null); 
 } 
}  


  分析响应
  由于RSS馈送之间的区别,分析响应具有一定的挑战性。一些含有包含标题和描述结点的图像,而其它则没有。因此,当我们分析回馈时,我们需要做一点检查来译解它是否包括一图像。如果它包括一图像,我们就可以,与该馈送的标题和链接一起,在image div标签中显示该图像:

复制代码 代码如下:


var _logo = ""; 
var _title = response.getElementsByTagName('title')[0].firstChild.data; 
var _link = response.getElementsByTagName('link')[0].firstChild.data;; 
_logo += "<a href='" + _link + "' target='_blank'>" + _title + "</a><br/>"; 
if(checkForTag(response.getElementsByTagName('image')[0])) 

 var _url = response.getElementsByTagName('url')[0].firstChild.data; 
 _logo += "<img src='" + _url + "' border='0'><br/>" 

document.getElementById('logo').innerHTML = _logo; 


  我们不仅必须检查每个图像以显示它,当遍历馈送中所有的项时我们还需要对之进行检查。因为如果存在一个图像,那么所有另外的标题和链接结点索引都将无法正常工作。因此,当发现图像标签时,我们应该通过在每一次遍历中增加索引值(+1)来调整标题和链接结点的索引:

复制代码 代码如下:


if(checkForTag(response.getElementsByTagName('image')[0]) "" i>0){ 
 var _title=response.getElementsByTagName('title')[i+1].firstChild.data; 
 var _link=response.getElementsByTagName('link')[i+1].firstChild.data; 

else{ 
 var _title =response.getElementsByTagName('title')[i].firstChild.data; 
 var _link = response.getElementsByTagName('link')[i].firstChild.data; 

  你可以使用checkForTag方法来检查是否存在特定的标签: 
function checkForTag(tag){ 
 if(tag != undefined) { 
  return true; 
 } 
 else{ 
  return false; 
 } 
}  


  存在许多种进行馈送分析的可能性。例如,你可以把项赋到类别上并使得该类别可折迭,这样用户就可以对其想观看的内容进行选择。作为一个示例,我使用日期来对项进行分类-这可以通过译解是否针对一个特定项的pubDate不同于前一个项的pubDate并且相应地显示一新的日期来实现:

复制代码 代码如下:


if(i>1){ 
 var previousPubDate = response.getElementsByTagName('pubDate')[i-1].firstChild.data; 

if(pubDate != previousPubDate || previousPubDate == undefined){ 
 _copy += "<div id='detail'>" + pubDate + "</div><hr align='left' width='90%'/>"; 

_copy += "<a href="javascript:showDetails('" + i + "');">" + _title + "</a><br/><br/>"; 
document.getElementById('copy').innerHTML += _copy;  


  注意,上面的最后一部分是showDetails方法,它用于当一用户从一个馈送中选择一特定的项时进行细节显示。这个方法有一个参数(项索引值),这个索引用于发现在该馈送中details结点的索引:

复制代码 代码如下:

(编辑:焦作站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读