views:

456

answers:

3

I have this code, which is working fine in FireFox, chrome and IE8 but is it not working on IE6 and 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&gt;login&lt;/a&gt;")
        {
                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";
        }
    }
}

When I run the code in any other browser except for IE6 and 7 the output shows me all the alert boxes starting from: - Entered Login() - Entered State Changed Login - Entered GetEmailId() - Enter State Changed Login 2

and then the window location changes to http://server.com/profile.html

but when I run the same thing on IE 6 or 7, the code does not go into the statechangedLogin2(), and so the only alerts I get here are:

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

I am unable to figure out why this issue is occuring. Why is it happening, and what should I change? The project is working absolutely fine on other browsers include IE8.

Can some one help me figure this issue of mine.

+1  A: 

Hello i am sorry to post my question again. but i was not getting any solution there so i tried to do this. thou i am sorry about it.

Anyways i was able to solve the situation with the help of my boss.

all i did was to give GetEmailId function its own session. something like this:

function 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); xmlhttpTwo.send(null); }

I tried this and it works absolutely fine on IE 6 n 7 ... :)

Best Zeeshan

Zeeshan Rang
A: 

Can you use JQuery, Prototype, Ext JS Base, or one of the other freely-available Javascript frameworks to do this instead?

There are a huge number of little browser inconsistencies to work around, so I don't recommend re-inventing the wheel--I know, I've done it before.

richardtallent
A: 

Hi, Some questions I just wanted to ask....

1.Are these the whole code? {If it's not then see the next questions, if not You might check something about XMLHTTP.}

  1. You are seeing this Qz, that means that is the whole code, I am quite surprised how this code can execute without any function call?? I can see You are using xmlHttp variable in all the functions but that is not global nor sending to any functions, without that You cannot use it directly rite?? Please get yourself learn more about Variable scopes.

Cheers......

I am passing the variables through the function. I did that when someone told me not me make the xmlhttp global. that happened after i posted my question. thanks for your suggestion thou.
Zeeshan Rang