iteye_2436 2009-07-25 12:49
浏览 209
已采纳

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事件来完成了
    次方法在实际运行中的效果以及是否会产生其他问题,还有待实战检验

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥15 如何在scanpy上做差异基因和通路富集?
  • ¥20 关于#硬件工程#的问题,请各位专家解答!
  • ¥15 关于#matlab#的问题:期望的系统闭环传递函数为G(s)=wn^2/s^2+2¢wn+wn^2阻尼系数¢=0.707,使系统具有较小的超调量
  • ¥15 FLUENT如何实现在堆积颗粒的上表面加载高斯热源
  • ¥30 截图中的mathematics程序转换成matlab
  • ¥15 动力学代码报错,维度不匹配
  • ¥15 Power query添加列问题
  • ¥50 Kubernetes&Fission&Eleasticsearch
  • ¥15 報錯:Person is not mapped,如何解決?
  • ¥15 c++头文件不能识别CDialog