2

我设法在我的 tomcat7 网络服务器中设置了 CORS,以便能够从另一个 web 应用程序获取我的 xml 文件。我面临的问题是,如果我更改了 xml 文件的内容,当我刷新浏览器时它不会显示更改,我必须重新启动服务器才能看到更改。

我想知道如何解决它。另外,是否可以在不刷新浏览器的情况下进行更改?

<html>
<body>
<h1>W3Schools Internal Note</h1>
<div>
<b>To:</b> <span id="to"></span><br />
<b>From:</b> <span id="from"></span><br />
<b>Message:</b> <span id="message"></span>
</div>
<script>
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","http://localhost:8080/test-app/note.xml",true);
xmlhttp.send();
xmlDoc=xmlhttp.responseXML;

document.getElementById("to").innerHTML=
xmlDoc.getElementsByTagName("to")[0].childNodes[0].nodeValue;
document.getElementById("from").innerHTML=
xmlDoc.getElementsByTagName("from")[0].childNodes[0].nodeValue;
document.getElementById("message").innerHTML=
xmlDoc.getElementsByTagName("body")[0].childNodes[0].nodeValue;
</script>

</body>
</html>
4

2 回答 2

0

您正在使用 get 方法来获取 xml 数据。因此,当您对 xml 文件进行更改时,浏览器只会检索缓存版本,而不是实际从服务器下载它。浏览器的这种行为非常难以处理,尤其是在 IE 中。但是,您可以通过将唯一的时间戳 ID 附加到您发出请求的 url 来轻松解决此问题。

例如-

http://localhost:8080/test-app/note.xml?timestamp=12345

对于您问题的第二部分,是的,可以在无需刷新页面的情况下获取更改的 xml 数据,但为此,您需要为您的应用程序实现 ajax 长轮询或 websocket。

于 2013-03-19T04:11:39.963 回答
0

如果你想完全控制元素,你可以使用 extjs 将你的 excel 加载到一个网格中。它可以刷新更改的部分而不刷新整个页面。

我没有使用CORS。但是您也可以尝试访问一个 txt 文件以查看它与缓存或 excel 相关。

于 2013-03-19T03:47:37.583 回答