在我的项目中,我为设备开发了一个Web界面。设备的时间和名称使用AJAX在网页上更新。
首次运行时,当创建(更新)网页时,IE8会正确显示页面,但在刷新/重新访问时,时间会正确显示,但设备名称文本(偶尔会发生变化)不存在。我正在使用innerHTML属性来更新文本。
我在Google Chrome上访问网页时没有遇到此问题。我还使用HTML标头禁用了缓存。 HTML标题如下所示
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<meta http-equiv="content-type" content="text/html;charset=utf-8" />
<meta http-equiv="pragma" content="no-cache" />
<meta http-equiv="cache-control" content="no-cache" />
脚本:
function OnComplete (xmlDoc) {
/* ToDo: Add complete event here or remove method
xmlDoc contains the received XML Document */
try{
var txt="";
x = xmlDoc.getElementsByTagName("DateTime");
document.getElementById("idClock").innerHTML = x[0].firstChild.nodeValue;
x = xmlDoc.getElementsByTagName("TCOLOR");
document.getElementById("idClock").style.color = x[0].firstChild.nodeValue;
x = xmlDoc.getElementsByTagName("deviceNameType");
alert(x[0].firstChild.nodeValue);
document.getElementById("deviceName").innerHTML = x[0].firstChild.nodeValue;
x = xmlDoc.getElementsByTagName("ALARM");
var alarmImg = document.getElementById("idImgAlarm");
var value = x[0].firstChild.nodeValue;
switch(value){
case '0':
SetClassName( alarmImg, 'replace', 'hidden', 'inline' );
break;
case '1':
alarmImg.src = 'Alarm.gif';
SetClassName( alarmImg, 'replace', 'inline', 'hidden' );
break;
case '2':
alarmImg.src = 'Alarm_static.jpg';
alarmImg.className ="p4 pr10 f_r pointer inline";
break;
default:
alert("default");
break;
}
}catch(e){/*alert('ERROR\n'+ e);*/}
}
示例XML:
<?xml version="1.0" encoding="ISO-8859-1"?><rtc><DateTime>2010-12-03 13:01:39 (UTC)</DateTime><TCOLOR>#0</TCOLOR><deviceNameType>AA1J1Q01A1, MYDEVICE</deviceNameType><ALARM>1</ALARM></rtc>
alert()适用于chrome但不适用于IE。
如何在Internet Exploer 8中解决此问题?
答案 0 :(得分:0)
如果你正在使用jQuery(我知道你说JS)试试这个:
$.ajaxSetup({
cache: false
});
答案 1 :(得分:0)
AJAX获取请求缓存在IE中。您需要将缓存设置为false:http://api.jquery.com/jQuery.ajax/
benhowdle89的解决方案会影响全局ajax设置,因此页面上的任何ajax请求都不会缓存结果。