в Internet Explorer 8 появляется сообщение об ошибке Javascript / Ajax! кстати это не шокирующая часть - PullRequest
0 голосов
/ 13 апреля 2011
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);
    b.onreadystatechange = function (){
        if(b.status == 200 && b.readyState == 4){
            document.getElementById("divid").innerHTML = b.responseText;
        }
    }
    b.open("get", u, true);
    b.send();
}

И на целевой странице "ajax3_php.php":

<?php
echo "OK";
?>

И на "разделенном" idТест

сообщение об ошибке:

Message: Unspecified error.
Line: 20
Char: 3
Code: 0
URI: http://localhost/lat1/ajax/ajax3.php

Шокирующая часть, это на линии 20:

if(b.status == 200 && b.readyState == 4){

Что не так с этим?К вашему сведению: пожарный ничего не говорит.

1 Ответ

0 голосов
/ 13 апреля 2011

Этот код, кажется, делает свое дело.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...