RSS 是一种基于 XML的文件标准,通过符合 RSS 规范的 XML文件可以简单实现网站之间的内容共享。Ajax 是Asynchronous JavaScript and XML的缩写。通过 Ajax 技术可以经由超文本传输协议(Http) 向一个服务器发出请求并且在等待该响应时继续处理另外的数据。通过 Ajax 技术可以很容易实现读取远程 XML文件,因此,可以使用 Ajax技术实现远程访问依据 RSS 标准生成的摘要信息,甚至我们可以自己写一个 RSS 阅读器。

Ajax 并不是一门新的语言或技术, 它实际上是几项技术按一定的方式组合在一起。共同在协作中发挥各自的作用, 它包括:使用XHTML 和CSS 标准化呈现; 使用DOM 实现动态显示和交互; 使用XML 和XSLT 进行数据交换与处理; 使用XMLHttpRequest进行异步数据读取; 最后用 JavaScript 绑定和处理所有数据。好了,对于理论就不在多说了,下面我们直接看代码吧。

创建XMLHttpRequest对象并将请求发送到服务器:

 function createXHR(url){
if(window.XMLHttpRequest){
xmlHttp = new XMLHttpRequest();
}else{
xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
}
xmlHttp.open("post",url,"false");
xmlHttp.onreadystatechange = getResponse; xmlHttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
xmlHttp.send(null);
}

通过DOM操作对Rss文档进行遍历,得到需要的值:

function readDoc(doc){
root = doc.getElementsByTagName("channel")[0];
docTitle = root.getElementsByTagName("title")[0];
docLink = root.getElementsByTagName("link")[0];
docDescription = root.getElementsByTagName("description")[0];
items = root.getElementsByTagName("item");
for(var i=0;i<items.length;i++){
itemTitle = items[i].getElementsByTagName("title")[0];
itemLink = items[i].getElementsByTagName("link")[0];
itemDescription = items[i].getElementsByTagName("description")[0];
//itemPubDate = items[i].getElementsByTagName("pubDate")[0];
document.getElementById("rssTitle").innerHTML = docTitle.firstChild.nodeValue;
temp = "</h1><h2><a href=""+itemLink.firstChild.nodeValue+"" target="_blank">"+itemTitle.firstChild.nodeValue+"</a></h2>"+"<p>"+itemDescription.firstChild.nodeValue+"</p><hr/>";
document.getElementById("readRss").style.display = "none";
document.getElementById("printRss").getElementsByTagName("span")[0].style.display = "none";
document.getElementById("printRss").innerHTML = document.getElementById("printRss").innerHTML + temp;
}
}

调用createXHR(url)函数,传入参数,向服务器发送求:

createXHR("http://www.apple.com.cn/hotnews/rss/hotnews.rss");

得到响应:

  function getResponse(){
if(xmlHttp.readyState == 4){
if(xmlHttp.status == 200){
rssDoc = xmlHttp.responseXML;
readDoc(rssDoc);//调用readDoc()函数
}else{
document.getElementById("rssTitle").innerHTML = "读取异常!";
//alert(xmlHttp.status);
}
}
}

最新文章

  1. paip.jdbc 连接自动释放的测试
  2. Android 向Application对象添加Activity监听
  3. mysql查询表里的重复数据方法:
  4. Java Web项目调优原则
  5. JavaScript 札记(数据类型和变量、)
  6. add to svn ignore disabled
  7. Chef
  8. Delphi- 连接MySQL数据库BDE
  9. javasscript学习笔记 之 数组学习二 数组的所有方法
  10. 如何让div横向排列
  11. CSS制作照片墙
  12. c语言项目开发流程二部曲
  13. 稀疏分解中的MP与OMP算法
  14. Windows server 2012 install .net core sdk 2.2.103
  15. .Net结合JQuery实现向aspx后台函数进行请求。
  16. centos7搭建docker私有仓库
  17. spring的orm模块
  18. zoj 3229 上下界网络最大可行流带输出方案
  19. LWIP带UCOS操作系统移植
  20. JQuery的焦点事件focus() 与按键事件keydown() 及js判断当前页面是否为顶级页面 子页面刷新将顶级页面刷新 window.top.location

热门文章

  1. 弱智python小游戏猜数字
  2. Oracle 11G RAC For Windows 2008 R2部署手册(亲测,成功实施多次)
  3. [转帖]学习一下centos7 新地方
  4. avalon学习教程
  5. Keil MDK中单个c文件生成LIB文件
  6. Ubuntu 12.04下LAMP环境搭建实录
  7. BZOJ3270 博物馆(高斯消元+概率期望)
  8. MySQL 大表备份、改表
  9. MT【116】三个点动起来
  10. 【刷题】BZOJ 2693 jzptab