Этот код, кажется, делает свое дело.
function a()
{
var b = null;
if(window.XMLHttpRequest)
{
b = new XMLHttpRequest();
}else if(window.ActiveXObject)
{
b = new ActiveXObject("Microsoft.XMLHTTP");
}
if(!b)
{
b = new ActiveXObject("msxml2.XMLHTTP");
}
return b;
}
var b = a();
function c()
{
var u = "ajax3_php.php?w="+ parseInt(Math.random()*88888, 10);
b.open("get", u, true);
b.onreadystatechange = function ()
{
if(b.readyState === 4)
{
if(b.status === 200)
{
if(b.responseText)
{
document.getElementById("divid").innerHTML = b.responseText;
}
}
}
};
b.send();
}
c();
У меня нет ответа серебряной пули о том, почему ошибка появляется, но вызов b.status
выдает ошибку, когдаreadyState
не было 4
.Тем не менее, именно с этой ошибкой я столкнулся недавно (но с другим типом ошибки) при отправке пустой строки через innerHTML
элементу в IE 8 (я подозревал, что ваш responseText
был пустым, вызывая ошибку).
Я позволил себе исправить этот код (вместе с несколькими другими штрихами).Нет ошибок в IE 7-8, Quirks или нет.
Надеюсь, это вам поможет.
-Matt
РЕДАКТИРОВАТЬ: Я наткнулся на этот пост MSDN.Любопытно видеть, что их пример кода использует вложенные блоки if, как и я, но пока без объяснения причин.Я буду расследовать дальше.
Ссылка: http://msdn.microsoft.com/en-us/library/dd576252%28v=vs.85%29.aspx