Javascript Ajax异步读取RSS文档具体实现
发布时间:2024-05-09 10:36:56
标签:Ajax,异步读取,RSS文档
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);
}
}
}


猜你喜欢
- 用coding-pages打开后显示Failed to load resource: the server responded with a
- 本文实例为大家分享了celery实现订单超时取消的具体代码,供大家参考,具体内容如下Celery官方文档中关于定时任务使用的说明项目目录结构
- 需要使用到的文件wxapp.py, read_file.py, setup.py#!/usr/bin/env python# -*- cod
- 一、python代码实现及turtle库简单介绍桌面时钟项目描述1、使用turtle库绘制时钟外形及表针;2、使用datetime获取系统时
- 最近在用python处理Excel表格是遇到了一些问题1, xlwt最多只能写入65536行数据, 所以在处理大批量数据的时候没法使用2,
- 了解了上一篇的ADO.NET简介,我们就可以来对数据库进行增删改查等基本操作了!下面是每种操作的具体实现。先在自定义类的头部定义好数据库连接
- 一、mysqldump 简介mysqldump 是 MySQL 自带的逻辑备份工具。它的备份原理是通过协议连接到 MySQL 数据库,将需要
- 开发应用程序时,若只有一个窗口则只需关心这个窗口里面的各控件之间如何传递数据。如果程序有多个窗口,就要关心不同的窗口之间是如何传递数据。单一
- 局部变量什么是局部变量通俗定义:函数内部定义的变量就叫局部变量。话不多说,代码如下:def test1(): a = 300 # 定义一个局
- 很多网站注册时都会要求输入电子邮箱,其应用场景是比较广的,例如注册账号接收验证码、注册成功通知、登录通知、找回密码验证通知等。本文将介绍如何
- 1.简介和安装sysbench是一个开源的、模块化的、跨平台的多线程性能测试工具,可以用来进行CPU、内存、磁盘I/O、线程、数据库的性能测
- 本文实例讲述了golang实现sql结果集以json格式输出的方法。分享给大家供大家参考,具体如下:func getJSON(sqlStri
- MySql Server安装步骤如下所示:1安装MySql Server2 安装MySqlServer管理工具解压中文语言包,将文件复制到安
- --创建 test 表 ,插入数据CREATE TABLE test(code varchar(50), [values] varchar(
- 本文介绍了使用xmlhttp处理远程文件数据、或采集文章时,对对方网页编码的处理方法。因为使用ajax的xmlhttp网页编码处理不当很容易
- 运行环境Python 2.7操作实例1.原始文本格式:空格分隔的txt,例如2016-03-22 00:06:24.4463094 中文测试
- 前言我们知道,enigma机是德军二战中重要的情报加密机器,其有许多特点。首先,它是一台加解密一体机其次,它有排己性,虽然多次输入同一明文可
- 下载此插件 并将其解压后的my_focus文件夹安放在KindEditor插件目录下(KindEditor所在目录/plugins/)如:H
- 在mysql文档中,mysql变量可分为两大类,即系统变量和用户变量。但根据实际应用又被细化为四种类型,即局部变量、用户变量、会话变量和全局
- 抱着“取之于众 服务于众”的思想,我总结了一下,把它拿到网上来与大家分享,希望能帮助遇到类似问题的朋友。 我主要使用了IE内置的WebBro