我有這段代碼,它在FireFox,Chrome和IE8中工作正常,但它不能在IE6和IE7上工作。在IE6和IE7上正常運行AJAX的問題
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()
,所以只能提醒我來到這裏是:
- 輸入的登錄()
- 進入狀態改變登錄
- 進入GetEmailId()
我無法弄清楚,爲什麼這個問題正在發生。爲什麼會發生,我應該改變什麼?該項目在其他瀏覽器包括IE8上運行得非常好。
有人能幫我解決這個問題。
沒有任何理由不使用某種形式的Ajax庫,像jQuery?此外,請將您的代碼部分標記爲代碼(101010按鈕) – 2009-08-04 14:54:25