//判断不同的浏览器
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系统的功能了。欢迎分享,转载请注明来源:内存溢出
评论列表(0条)