PHP和AJAX打造高级RSS聚合器
来源:互联网 作者:不详
摘要:RSS聚合器是一种特别适合于使用标准AJAX引擎进行构建的应用程序,然而,要实现对RSS回馈的跨域的AJAX请求往往是很难的。在本文中,我将向你展示如何利用一个简单的PHP函数来实现"桥接"AJAX引擎和RSS内容。一、 引言现在,开发一个……
六、 Feed对象
这个Feed对象是一个prototype。通过它的构造器函数,Feed对象接收当我们在Aggregator对象中创建它时传递的所有参数。这些参数分别相应于回馈的ID,标题,链接和项。在这个函数中,我们设置所有的缺省值,创建一些数组以备后用,并且把项发送到一个称为parseItems的方法。在这个parseItems方法中,我们将检索我们的回馈项中的所有的值并且填充我们在构造器中创建的那个数组。
Feed.prototype.parseItems = function(items) { for(var i=0; i<items.length; i++) { var linkTitle = items[i].getElementsByTagName("title")[0].firstChild.nodeValue; var title = "<a href='#' class='title' onclick='Aggregator.DisplayFeed("+ this.id +", "+ i +");'>" + linkTitle +"</a>"; this.titleArray.push(title); this.linkTitleArray.push(linkTitle); var _link = items[i].getElementsByTagName("link")[0].firstChild.nodeValue; this.linkArray.push(_link); var description = items[i].getElementsByTagName("description")[0].firstChild.nodeValue; this.descriptionArray.push(description); var pubDate = items[i].getElementsByTagName("pubDate")[0].firstChild.nodeValue; this.pubDateArray.push(pubDate); } } |
一旦我们把所有的值存储在数组中,当我们准备好显示页面中的数据时我们就能够使用它们。这个对象中的第三个方法集中于显示回馈中的数据:
· GetTitle负责得到回馈标题(作为一个切换项标题的链接,通过调用Aggregator的toggleTitles方法来实现)。
· GetAllTitles简单地从回馈中返回所有的项标题。
· GetDetails负责实现显示该回馈所有的细节。这个方法基于作为一个参数传递的ID检索Feed对象的数组中的值。然后,这些值被格式化成一个HTML字符串并返回到调用者,然后由该调用者负责把它们添加到索引页面。
Feed.prototype.GetTitle = function() { return "<div id='title_"+ this.id +"'><br/><a href='#' onclick='Aggregator.ToggleTitles("+ this.id +");'>" + this.title + "</a></div>"; } Feed.prototype.GetAllTitles = function() { return this.titleArray; } Feed.prototype.GetDetails = function(id) { details = "<a href='"+ this.linkArray[id] +"' target='_blank'>"+ this.linkTitleArray[id] +"</a><br/>"; details += this.descriptionArray[id] +"<br/>"; details += this.pubDateArray[id]; return details; } |
七、 小结
到现在为止,有关上面创建的Aggregator对象的下一步应该是添加一个timeout以便检查针对当前被添加到聚合器的RSS回馈的更新。另外,该回馈还能够被保存到一个数据库中并且被基于用户帐户加以检索。但是,因篇幅所限,这些功能只好留由读者您来实现了……