从文本文件中获取最新数据

时间:2012-07-03 23:32:21

标签: php javascript html

更新文本文件的内容时,不会更新。相反,我必须删除我的谷歌浏览器中的所有缓存和诸如此类的内容以使其刷新。但是,它在使用Apache服务器(本地主机)时确实有效。

我尝试添加:<meta http-equiv="expires" content="Mon, 26 Jul 1997 05:00:00 GMT"/> <meta http-equiv="pragma" content="no-cache" />,但问题仍然存在。

function MakeRequest()
{
  var xmlHttp = getXMLHttp(); // just a basic XML request
  xmlHttp.onreadystatechange = function()
  {
    if(xmlHttp.readyState == 4)
    {
      HandleResponse(xmlHttp.responseText);
    }
  }
  xmlHttp.open("GET", "counter.txt", true); 
  xmlHttp.send(null);
}

我还有另一个JavaScript只是在div中打印它:(定时运行有一些延迟)

document.getElementById('counterHolder').innerHTML = response;

Click here if you need to see the webpage live.

3 个答案:

答案 0 :(得分:2)

这似乎是一个缓存问题。我不能完全按照它的方式描述它为什么会发生,但根据我的经验,在你的获取请求中在你的网址末尾添加一个随机字符串应该可行。我建议如下:

xmlHttp.open("GET", "counter.txt?" + Math.random(), true);

答案 1 :(得分:1)

我相信类似这篇文章会有所帮助。它旨在链接到一个文件,每次重新加载页面时都会被视为一个新链接,但是,同样适用于您的情况:

HTML Link that bypasses Cache

答案 2 :(得分:0)

我建议使用jQuery或其他不错的JavaScript库。如果你这样做,那么检查jQuery中是否有一个缓存选项。

尝试按原样修复问题,试试这个..

function MakeRequest()
{
  var xmlHttp = getXMLHttp(); // just a basic XML request
  xmlHttp.onreadystatechange = function()
  {
    if(xmlHttp.readyState == 4)
    {
      HandleResponse(xmlHttp.responseText);
    }
  }
  var timestamp_since_epoch = new Date().getTime();
  xmlHttp.open("GET", "counter.txt?"+timestamp_since_epoch, true); 
  xmlHttp.send(null);
}

以上操作是生成自纪元以来的时间戳,并将其作为参数添加到AJAX调用中。