Javascript Ajax異步讀取RSS文檔具體實(shí)現(xiàn)
RSS 是一種基于 XML的文件標(biāo)準(zhǔn),通過(guò)符合 RSS 規(guī)范的 XML文件可以簡(jiǎn)單實(shí)現(xiàn)網(wǎng)站之間的內(nèi)容共享。Ajax 是Asynchronous JavaScript and XML的縮寫。通過(guò) Ajax 技術(shù)可以經(jīng)由超文本傳輸協(xié)議(Http) 向一個(gè)服務(wù)器發(fā)出請(qǐng)求并且在等待該響應(yīng)時(shí)繼續(xù)處理另外的數(shù)據(jù)。通過(guò) Ajax 技術(shù)可以很容易實(shí)現(xiàn)讀取遠(yuǎn)程 XML文件,因此,可以使用 Ajax技術(shù)實(shí)現(xiàn)遠(yuǎn)程訪問(wèn)依據(jù) RSS 標(biāo)準(zhǔn)生成的摘要信息,甚至我們可以自己寫一個(gè) RSS 閱讀器。
Ajax 并不是一門新的語(yǔ)言或技術(shù), 它實(shí)際上是幾項(xiàng)技術(shù)按一定的方式組合在一起。共同在協(xié)作中發(fā)揮各自的作用, 它包括:使用XHTML 和CSS 標(biāo)準(zhǔn)化呈現(xiàn); 使用DOM 實(shí)現(xiàn)動(dòng)態(tài)顯示和交互; 使用XML 和XSLT 進(jìn)行數(shù)據(jù)交換與處理; 使用XMLHttpRequest進(jìn)行異步數(shù)據(jù)讀取; 最后用 JavaScript 綁定和處理所有數(shù)據(jù)。好了,對(duì)于理論就不在多說(shuō)了,下面我們直接看代碼吧。
創(chuàng)建XMLHttpRequest對(duì)象并將請(qǐng)求發(fā)送到服務(wù)器:
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);
}
通過(guò)DOM操作對(duì)Rss文檔進(jìn)行遍歷,得到需要的值:
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;
}
}
調(diào)用createXHR(url)函數(shù),傳入?yún)?shù),向服務(wù)器發(fā)送求:
createXHR("http://www.apple.com.cn/hotnews/rss/hotnews.rss");
得到響應(yīng):
function getResponse(){
if(xmlHttp.readyState == 4){
if(xmlHttp.status == 200){
rssDoc = xmlHttp.responseXML;
readDoc(rssDoc);//調(diào)用readDoc()函數(shù)
}else{
document.getElementById("rssTitle").innerHTML = "讀取異常!";
//alert(xmlHttp.status);
}
}
}
相關(guān)文章
JavaScript中Location.search處理使用方法
本文主要介紹了JavaScript中Location.search處理使用方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-04-04js實(shí)現(xiàn)選項(xiàng)卡內(nèi)容切換以及折疊和展開(kāi)效果【推薦】
本文主要介紹了js實(shí)現(xiàn)選項(xiàng)卡內(nèi)容切換以及文字折疊和展開(kāi)效果的示例代碼。具有一定的參考價(jià)值,下面跟著小編一起來(lái)看下吧2017-01-01JS實(shí)現(xiàn)瀏覽器狀態(tài)欄顯示時(shí)間的方法
這篇文章主要介紹了JS實(shí)現(xiàn)瀏覽器狀態(tài)欄顯示時(shí)間的方法,涉及JavaScript針對(duì)時(shí)間及狀態(tài)欄操作的相關(guān)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-10-10js 實(shí)現(xiàn)無(wú)干擾陰影效果 簡(jiǎn)單好用(附文件下載)
js實(shí)現(xiàn)無(wú)干擾陰影效果,簡(jiǎn)單好用,需要的朋友可以參考下。2009-12-12自己寫的Javascript計(jì)算時(shí)間差函數(shù)
Javascript計(jì)算時(shí)間差函數(shù),獲得時(shí)間差,時(shí)間格式為 年-月-日 小時(shí):分鐘:秒 或者 年/月/日 小時(shí):分鐘:秒。2013-10-10js實(shí)現(xiàn)會(huì)跳動(dòng)的日歷效果(完整實(shí)例)
下面小編就為大家?guī)?lái)一篇js實(shí)現(xiàn)會(huì)跳動(dòng)的日歷效果(完整實(shí)例)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-10-10JS中ESModule和commonjs介紹及使用區(qū)別
這篇文章主要介紹了JS中ESModule和commonjs介紹及使用區(qū)別,文章圍繞主題展開(kāi)詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的朋友可以參考一下2022-07-07通過(guò)onmouseover選項(xiàng)卡實(shí)現(xiàn)img圖片的變化
這篇文章主要介紹了通過(guò)onmouseover選項(xiàng)卡實(shí)現(xiàn)img圖片的變化,需要的朋友可以參考下2014-02-02