如何让浏览器显示更改而不刷新?

时间:2013-03-19 03:28:43

标签: javascript jquery ajax xmlhttprequest tomcat7

我已经设法在我的tomcat7网络服务器中设置CORS,以便能够从另一个webapp获取我的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>

2 个答案:

答案 0 :(得分:0)

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

我没有使用CORS。但您也可以尝试访问txt文件以查看与缓存或Excel相关的文件。

答案 1 :(得分:0)

您正在使用get方法来获取xml数据。因此,当您对xml文件进行更改时,浏览器仅检索缓存版本,而不是实际从服务器下载缓存版本。浏览器的这种行为非常讨厌,特别是在IE中。但是,您可以通过将唯一的时间戳ID附加到您要求的网址来轻松解决此问题。

EG -

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

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