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

У меня есть этот код, который отлично работает в 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, код не переходит в stateagedLogin2 (), и поэтому единственные предупреждения, которые я получаю здесь:

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

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

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

Ответы [ 2 ]

2 голосов
/ 05 августа 2009

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

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

Все, что я сделал, - это назначил функции GetEmailId свой собственный сеанс. как то так:

функция GetEmailId ()

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

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

Бест Зеешан

0 голосов
/ 05 августа 2009

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

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

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