Internet Explorer не выполняет Javascript в порядке

Я разрабатываю веб-приложение, которое должно выполнять некоторую внутреннюю обработку, при этом информация по-прежнему отображается на экране. Очевидно, это лучше всего подходит для AJAX, который я использую. Однако перед тем, как начать запрос AJAX, я вношу несколько визуальных изменений с помощью Javascript. В частности:

document.getElementById ('calc'). InnerHTML = 'Расчет ...'; document.getElementById ('calc'). disabled = true;

Затем я вызываю сервлет через AJAX.

Это отлично работает в 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-адрес возвращается почти мгновенно. В моем приложении он указывает на страницу, которая обрабатывает базу данных около минуты, поэтому проблема гораздо более очевидна.

7
задан enjiner 18 January 2012 в 02:19
поделиться