我正在开发一个web应用程序,需要在显示信息的同时进行一些后端处理。显然,这最适合使用AJAX,我正在使用它。但是,在开始AJAX请求之前,我通过Javascript进行了一些视觉上的更改。具体来说:
document.getElementById('calc').innerHTML = '计算中...'; document.getElementById('calc').disabled = true;
然后我通过AJAX调用一个servlet。
这在Firefox中运行良好。但是在Internet Explorer(版本8)中,视觉上的更改从未生效。应用程序只会停在那里一两分钟,直到完成AJAX处理。似乎AJAX代码在页面更改之前执行,但我不知道为什么会这样。
非常感谢任何帮助。
编辑:这是我最好的尝试,用简短、自包含、正确的示例来说明问题。
唯一的问题就是这个URL返回几乎是瞬间完成的。在我的应用程序中,它指向一个需要处理数据库约一分钟的页面,因此这个问题更加明显。
document.getElementById('calc').innerHTML = '计算中...'; document.getElementById('calc').disabled = true;
然后我通过AJAX调用一个servlet。
这在Firefox中运行良好。但是在Internet Explorer(版本8)中,视觉上的更改从未生效。应用程序只会停在那里一两分钟,直到完成AJAX处理。似乎AJAX代码在页面更改之前执行,但我不知道为什么会这样。
非常感谢任何帮助。
编辑:这是我最好的尝试,用简短、自包含、正确的示例来说明问题。
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<meta http-equiv="Pragma" content="no-cache">
<meta http-equiv="Cache-Control" content="no-cache">
<script>
var inEdit = 0;
var calcCurrent = false;
function recalc() {
var xmlhttp=new XMLHttpRequest();
if (xmlhttp==null)
{
var tmp = "Your browser does not support XML! ";
tmp += "Please contact your Technical Support division for information on how to upgrade.";
alert(tmp);
}
else
{
document.getElementById('calc').innerHTML = 'Calculating...';
document.getElementById('calc').disabled = true;
var url = "http://www.nzherald.co.nz/";
xmlhttp.open("GET",url,false);
xmlhttp.send(null);
if (xmlhttp.responseText.indexOf("Success")>=0) {
alert(xmlhttp.responseText);
}
else
alert(xmlhttp.responseText);
document.getElementById('calc').value = 'Recalculate';
document.getElementById('calc').disabled = false;
}
}
</script>
</head>
<body>
<a id='calc' class='Button' href="javascript:recalc()" >Recalculate</a>
</body>
</html>
唯一的问题就是这个URL返回几乎是瞬间完成的。在我的应用程序中,它指向一个需要处理数据库约一分钟的页面,因此这个问题更加明显。
calc
元素是什么?它可能不支持在 IE8 中使用innerHTML
。 - Phil