使用IE6和IE7的AJAX调用的问题 - 我再次问同样的问题,因为我没有得到之前的任何解决方案(p

2019-09-22 04:40发布

我有这样的代码,这是工作的罚款,火狐,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包括。

可有一个人帮助我我的这个问题。

Answer 1:

你好,我很抱歉再次发布我的问题。 但我没有得到任何解决方案有,所以我试图做到这一点。 你我感到后悔的。

反正我能解决我的老板的帮助的情况。

我所做的只是让GetEmailId发挥自己的会话。 是这样的:

起作用GetEmailId()

{警报( “输入的GetEmailId()”); xmlhttpTwo = GetXmlHttpObject()VAR URL = “http://server.com/GetPostEmail.php”; URL = URL + “&SID =” +的Math.random(); xmlhttpTwo.onreadystatechange = statechangedLogin2; xmlhttpTwo.open( “GET”,网址,真实); xmlhttpTwo.send(NULL); }

我想这和它的作品精美绝伦的IE 6ñ7 ... :)

最佳Zeeshan



Answer 2:

你可以使用jQuery,原型,Ext JS的基础,或者其他可自由使用的JavaScript框架中的一个来做到这一点呢?

有一个巨大的小浏览器不一致的数量来解决,所以我不建议重新发明轮子-我知道,我以前做过。



文章来源: problem using AJAX call in IE6 and IE7 — I am asking the same question again, cause i did not get any solution before