проблема с использованием вызова AJAX в IE6 и IE7 Я снова задаю тот же вопрос, потому что я не получил никакого решения раньше

У меня есть этот код, который отлично работает в FireFox, Chrome и IE8, но не работает ли он в IE6 и IE7.

function GetXmlHttpObject() {
  //var xmlHttp = null;
  try {
    xmlHttp = new XMLHttpRequest();
  } catch (e) {
    try {
      xmlHttp = new ActiveXObject("Msxml2.XMLHTTP");
    } catch (e) {
      xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
    }
  }
  return xmlHttp;
}

function login()
{
    alert("Entered Login()");   
    var url="http://server.com/ALUauth.php";
    xmlhttp.onreadystatechange=statechangedLogin;
    xmlhttp.open("GET", url, true);
    xmlhttp.send(null);
}

function statechangedLogin()
{
    if(xmlhttp.readyState==4)
    {
        alert("Entered State Changed Login");
        if (xmlhttp.responseText=="Please <a href=http://server.com/ALUauth.php?login>login</a>")
        {
                document.getElementById("ALUauth").innerHTML=xmlhttp.responseText;
        }
        else
        {
                GetEmailId();
        }

    }
}

function GetEmailId()
{   
    alert("Entered GetEmailId()");
    var url="http://server.com/GetPostEmail.php";
    url=url+"&sid="+Math.random();
    xmlhttp.onreadystatechange=statechangedLogin2;
    xmlhttp.open("GET", url, true);
    xmlhttp.send(null);
}

function statechangedLogin2()
{ 
    if(xmlhttp.readyState==4)
    {
        alert("Enter State Changed Login 2");
        if(xmlhttp.responseText=="Login again")
        {
                window.location="http://server.com/profile.html";
        }
    }
}

Когда я запускаю код в любом другом браузере, кроме IE6 и 7, на выходе отображаются все окна с предупреждениями, начиная с: - Вход в систему () - Вход в систему с измененным состоянием - Вход в GetEmailId () - Вход в состояние измененного входа в систему 2

а затем расположение окна изменится на http://server.com/profile.html

но когда я запускаю то же самое в IE 6 или 7, код не переходит в statechangedLogin2 (), и поэтому я получаю только следующие предупреждения:

* Entered Login()
* Entered State Changed Login
* Entered GetEmailId()

Я не могу понять, почему возникает эта проблема. Почему это происходит и что мне следует изменить? Проект отлично работает в других браузерах, включая IE8.

Может ли кто-нибудь помочь мне разобраться в этой моей проблеме.


person Zeeshan Rang    schedule 04.08.2009    source источник
comment
Выдает ли браузер какие-либо ошибки JavaScript (Инструменты- ›Свойства обозревателя-› Дополнительно (вкладка) - ›Просмотр (категория) -› Отображать уведомление о каждой ошибке скрипта)? Можно ли уменьшить код (например, вызвать GetEmailId) и по-прежнему выдавать ошибку?   -  person AaronSieb    schedule 05.08.2009
comment
Пожалуйста, не открывайте повторяющиеся вопросы, особенно если оригинала не было даже 24 часов назад ...   -  person ceejayoz    schedule 05.08.2009
comment
Можете ли вы перехватить другие вызовы statechangedLogin2 с другим readyState? Одна проблема, которую я вижу здесь, заключается в том, что все не будет контролироваться, если вызов для получения адреса электронной почты не удастся.   -  person Jeff Siver    schedule 05.08.2009
comment
Вторя ceejayoz - Обычно считается более вежливым отредактировать исходный вопрос, добавив дополнительную информацию.   -  person AaronSieb    schedule 05.08.2009


Ответы (2)


Привет, прошу прощения за повторный вопрос. но у меня не было никакого решения, поэтому я попытался это сделать. я сожалею об этом.

В любом случае я смог решить ситуацию с помощью моего босса.

все, что я сделал, это предоставил функции GetEmailId отдельный сеанс. что-то вроде этого:

функция GetEmailId ()

{alert ("Введен GetEmailId ()"); xmlhttpTwo = GetXmlHttpObject () var url = "http://server.com/GetPostEmail.php"; url = url + "& sid =" + Math.random (); xmlhttpTwo.onreadystatechange = statechangedLogin2; xmlhttpTwo.open ("ПОЛУЧИТЬ", url, истина); xmlhttpTwo.send (ноль); }

Я пробовал это, и он отлично работает в IE 6 n 7 ... :)

Лучший Зишан

person Zeeshan Rang    schedule 05.08.2009

Можете ли вы вместо этого использовать JQuery, Prototype, Ext JS Base или одну из других свободно доступных фреймворков Javascript?

Существует огромное количество мелких несоответствий в браузере, которые нужно обойти, поэтому я не рекомендую изобретать колесо заново - я знаю, что делал это раньше.

person richardtallent    schedule 05.08.2009