js如何远程读取XML并保存本地输出????

js如何远程读取XML并保存本地输出????,第1张

先判断浏览器,然后读取xml数据就可以了

//判断不同的浏览器

function InitMf()

{

var mf_change=false

try {

mf_change = new ActiveXObject("Msxml2.XMLHTTP")

} catch (e) {

try {

mf_change = new ActiveXObject("Microsoft.XMLHTTP")

} catch (E) {

mf_change = false

}

}

if (!mf_change &&typeof XMLHttpRequest!='undefined') {

mf_change = new XMLHttpRequest()

}

return mf_change

}

读取数据

var xmlHttp = InitMf()

var HTML = ""

//获得xml文件

xmlHttp.open("GET", xmlfile+"?"+Math.random(), true)

// 设置处理服务器的JS函数,函数又 xmlHttp.onreadystatechange来确定

xmlHttp.onreadystatechange=function() {

//alert(xmlHttp.status)

if (xmlHttp.readyState==4 &&xmlHttp.status==200) {

//ajax的XML传输的解析。获取解析的数据

var xml = xmlHttp.responseXML

var node = xml.getElementsByTagName("item")//获得总结点

for(var i = 0 i <node.length i++){

var str_t = ""

var str_d = ""

var menuHTML = ""

var elem = node[i]

//下面开始获得子节点数据,当然可以继续循环,获得更下面的节点

var title = elem.getElementsByTagName("title")[0].textContent != undefined ? elem.getElementsByTagName("title")[0].textContent : elem.getElementsByTagName("title")[0].text

这些只是部分代码,不过已经足够了

在第一次请求的时候

如果是动态生成你就在服务器的response header上加上Last-Modified

然后你第二次请求的头上就会有If-Modified-Since

这个时间就是你第一次请求道本地的时间

如果服务的 文件的属性 不比你新

服务器就返回304 .然后你浏览器自然就在缓存里面取这个 xml

主要是服务器返回304

如果是请求静态文件 那一般的服务器都会自动的加上Last-Modified的

本来js是可以 *** 作本地系统和文件的,但是,这个对于 *** 作系统来说,是一个非常大的BUG,因为js是从服务器上下载下来,直接在本地执行,在执行前用户是不清楚他到底都做了什么,如果此时执行一些非法代码,或者写一段病毒到本地,这都是有可能的,所以现在的js已经没有这些功能了,只能是依靠高级开发语言来完善B/S系统的功能了。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/11913096.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-19
下一篇 2023-05-19

发表评论

登录后才能评论

评论列表(0条)

保存