【问题标题】:Prevent caching of the ajax response防止缓存 ajax 响应
【发布时间】:2013-07-16 06:39:59
【问题描述】:

我刚刚开始使用 HTML 和 java 脚本。我被困在两者之间。我创建了一个从 XML 读取数据并显示在页面上的网页。我能够成功地做到这一点。但是,如果我更改 XML 数据并刷新浏览器,它不会反映我网页上的更新数据。如果我手动清除浏览器历史记录然后刷新页面,它将显示更新的数据。但我希望在刷新页面后立即更新数据。我不想每次都清除浏览器历史记录。

我的服务器是 Apache 服务器。

我的html代码:

<!DOCTYPE HTML PUBLIC "- HTML 4.0 Transitional//EN">

<html>
<TITLE>DynamicHTML Page</TITLE>

<META content="text/html; charset=windows-1252" http-equiv=Content-Type> 
<META http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<META http-equiv="refresh" content="10";>
<META name=Author content="">
<META name=Keywords content="">

 <body>

 </div>
<xml ID="noteXML"
SRC="note.xml"></xml>
<script>

function ReadXML()
{
if (window.XMLHttpRequest)
  {// code for IE7+, Firefox, Chrome, Opera, Safari
  xmlhttp=new XMLHttpRequest();
  }
else
  {// code for IE6, IE5
  xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
  }
xmlhttp.open("GET","note.xml",false);
xmlhttp.send();
xmlDoc=xmlhttp.responseXML;

document.getElementById("data").innerHTML= xmlDoc.getElementsByTagName("data")[0].childNodes[0].nodeValue;
document.getElementById("status").innerHTML= xmlDoc.getElementsByTagName("status")[0].childNodes[0].nodeValue;

}

 </script>

 <div>
 <b>Require Data :</b>  <span id="data"></span><br />

 <div>
 <b>Current Status:</b> <span id="status"></span><br />

<script>
ReadXML();
</script>
</body>
 </html>  

我的 XML:

<?xml version="1.0" encoding="ISO-8859-1"?>

<note>
<data> 450 </data>
<status> Reading Data From XML </status>
</note>

我还尝试了以下操作以确保浏览器不会创建 Cashe,但似乎没有任何效果。

<META http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<META http-equiv="refresh" content="10";>

【问题讨论】:

  • 试试,xmlhttp.open("GET","note.xml?t="+(new Date()),false);
  • 感谢 Dharmesh 的回复......会试试这个
  • 欢迎,如果对您有用,请使用此解决方案,因为它始终有效,与 Math.random() 不同,您可能会在后续请求中获得相同的随机数,因为时间始终是唯一的,并且永远不会失败.

标签: javascript html css ajax


【解决方案1】:

您可以在文件中附加一个随机数:

xmlhttp.open("GET","note.xml?" + Math.random(),false);

这将确保浏览器始终获取最新版本,因为它永远不会缓存找到与随机匹配的缓存版本。

【讨论】:

  • 感谢回复...我会试试这个
  • 非常感谢我的朋友......从前两天开始我一直在尝试......它对我有用......再次感谢
猜你喜欢
  • 1970-01-01
  • 2015-07-31
  • 2014-11-23
  • 1970-01-01
  • 2012-04-13
  • 2011-12-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多