JavaScript动态清除。
两日前在修改ASP.NET中涉及到修改既有的一个调用Ajax 命名的方法,然后发布出去。
昨日,客户反馈画面显示不正常。 一脸愣逼,第一反应是IE的配置,客户的实际PC环境情况也不清晰。只能胡乱猜想。
大体往两个方向做猜想:1,IE的配置变动;2,代码的漏洞。
沿着这个思路,去查找。两个人一下午,并没有发现新的思路。
最终,Partner在请教其它SE后,得出了一解决方法:
代开Internet Option ⇒ General ⇒ Setting ⇒ Internet Temp file ⇒ First Option 选择
默认情况下, 被选中的是第三项:自动确认。改成网页表示时自动确认。
事后诸葛:
本次修改对象,前段时如下的Script,后台则是数据读取过程中的DB内容: function GetYusyuTusyaMei() {
if ($("txtInputer").value.replace(/\s+/g, "").length == 0) {
return;
}
var xmlhttp;
if (window.XMLHttpRequest) {
xmlhttp = new XMLHttpRequest();
}
else {
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange = function () {
if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
var ReturnStr = xmlhttp.responseXML.documentElement;
$("txtYunyusyaMei").value = ReturnStr.childNodes[0].text;
$("txtYunyusyaMei").title = ReturnStr.childNodes[0].text;
$("txtNaccsCd").value = ReturnStr.childNodes[1].text;
$("txtNaccsCd").title = ReturnStr.childNodes[1].text;
}
}
xmlhttp.open("GET", location.href + "?TukanTokuisaki=" + escape($("txtInputer").value), true);
xmlhttp.send();
}
并非直接修改的Aspx文件,而是其背后的JavaScript。仍属于画面变动。 画面加载过程中,默认从缓存中读取之前的代码。没有从服务器中读取。
换言之,是没精细的识别到服务器中JavaScrip做了变更,进而沿用本地的缓存页面。后台数据的读取则是对服务器端上已更新过的DLL进行操作。
导致新数据的反应在旧的页面上。由此产生了客户当前的怪现象。
另外可以澄清一个之前的模糊猜想:
当页面在缓存中保存时,于后台间的数据交换并不会直接与缓存关联。即:当Ajax等交互操作发生时,便往后台调用。当然后台Web端与DB端是如何
进行数据的缓存等操作则是本次讨论的议题之外。