iteye_2436
2009-07-25 12:49
浏览 200

JavaScript动态获取网站资源

http://www.javascript.com/data1.html这个页面存储了数据,data1.html的内容为:var v=[]; v[0] = "111"; v[2] = "222";
服务器会动态的更新data1.html文件,我现在要每隔5秒获取data1.html里边的数据,该如何获取呢?
getdata.js:
[code="java"]<br> var data1 = v; //这样data1就是data1.html的数据了,我也可以操作这里边的数据了、<br> [/code]
但是data1.html的数据更新了,data1还是最原始的值,现在我只有删除缓存或者从新打开这个页面,才能更新数据,有没有其他方法呢?
:shock:

如果有好的办法,会加分哦
[b]问题补充:[/b]
你的方法好像不好使哦,难道是从缓存中取?
[code="java"]
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">

function getData() { var Http = new ActiveXObject("Microsoft.XMLHTTP"); var url='http://www.ball365.com.cn/vip_member/new/company/1/data.html'; //发request Http.open("POST",url,false);   Http.send(); return Http.responseText; //获取response文本内容 } var temp=null; var xmlData=null; function xmlGetData() { xmlData = getData(); if (temp ==null) { temp = xmlData; } else if(xmlData != temp) { //数据如果发生变化 alert(xmlData); temp=xmlData; } else { alert("数据没变化"); //数据没有发生变化 } } function showData() { for (var i=0;i<v.length;i++) { alert(v); } }


Get data


[/code]

这个是我写的代码,已经测试好使了,但是我不清楚我该如何才能操作Http.responseText的值。这里边的值。上面的代码可以直接跑。
[b]问题补充:[/b]
不太清楚你说的跨域是什么意思,我后来写的代码好用,你可以试试。得到的xmlData是一个字符串,包含的是http://www.ball365.com.cn/vip_member/new/company/1/data.html的内容。如果data.html的内容有变化就会把这个内容alert出来,如果没变化就给个提示。
[b]问题补充:[/b]
script.src="http://www.javascript.com/data1.html"+(new Date().getTime());
这段url后边加上日期了,不好用啊,获取不到网站的文件 :(

  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

3条回答 默认 最新

  • iteye_20231 2009-07-25 21:58
    已采纳

    可以这样(假设这段代码在head段)
    [code="html"]

    function dljs(){ var head=document.getElementsByTagName('head')[0]; var script=document.getElementById("dljs"); if(script){ //你的数据处理代码在这里,其实这里面还应该有removeEventListener的方法,LZ自己考虑下 head.removeChild(script); setTimeout("dljs();",5000); return; } script = document.createElement("script"); script.type = "text/javascript"; script.id="dljs"; if(document.attachEvent)//处理浏览器兼容性 script.attachEvent("onreadystatechange",dljs); else if(document.addEventListener) script.addEventListener( "DOMContentLoaded",dljs,false); head.appendChild(script); //此getTime是为了防止缓存,其实也不一定需要这样,仅仅是可靠习惯 script.src="http://www.javascript.com/data1.html"+(new Date().getTime()); } dljs();//这样写最简单的兼容了FF和IE

    [/code]
    这个方法也就是不停的动态建立/删除script element,通过DOM onready事件来完成了
    次方法在实际运行中的效果以及是否会产生其他问题,还有待实战检验

    打赏 评论
  • fdsafds 2009-07-25 13:10

    设置一个ifarme 为隐藏,
    写在ifarme
    [code="java"]<br><br> var data1 = v; 、<br><br> [/code]

    ifarme 每隔5秒更新一下.试一下行不行

    打赏 评论
  • fdsafds 2009-07-25 13:51

    ajax 是不能跨域的,只能访问本网站的东西,

    不过可以用代理.

    ajax 请求本地的servlet ,servlet 再去请求外网的东西,然后再返回给ajax

    打赏 评论

相关推荐 更多相似问题