2012-05-12 46 views
1

這是我的Ajax代碼阿賈克斯崩潰IE 7

function sendAjax(send_data,id) 
{ 
    var ajaxobj; 

    alert("After this alert problem occurs!"); 

    if (window.XMLHttpRequest) ajaxobj = new XMLHttpRequest(); 
    else ajaxobj = new ActiveXObject("Microsoft.XMLHTTP"); 

    ajaxobj.onreadystatechange=function() 
    { 
     if(ajaxobj.readyState==4) 
     { 
      if(ajaxobj.responseText.match("confirmPage") != null) document.getElementById(id).innerHTML = ajaxobj.responseText; 
      else 
      { 
      if(id == "FreshContent") 
      document.getElementById(id).innerHTML = "<a id=\"refreshpage\" onClick=\"siteSelection('select')\">Failed.Click here to Reload!</a>"; 
      else 
      document.getElementById(id).innerHTML = "<a id=\"refreshpage\" onClick=\"sendAjax(0,'latest_gossip_marquee');\">Failed.Click here to Reload!</a>"; 
      } 

      } 
     else document.getElementById(id).innerHTML="Loading...."; 
    } 

    if(id == "FreshContent") ajaxobj.open("GET","sitexyz.php?"+send_data,true); 
    else ajaxobj.open("GET","html/xyz.html",true); 
    ajaxobj.send();  
} 

這裏FreshContent是div標籤歌劇&火狐id.it工作,但它在我的IE7崩潰。 查看服務器返回的頁面是否有效,代碼檢查返回的頁面是否包含confirmPage字符串。

+0

謝謝你幫助我:-) – wenn32

+0

你有沒有考慮過使用庫而不是編寫自己的ajax函數? jQuery是顯而易見的建議,但有很多選擇,所以不需要編寫自己的。 – Spudley

回答

1

試試這個功能 - 這是一個little more robust比你使用的。

function getHTTPObject() { 
    var xhr = false; 
    if (window.XMLHttpRequest) { 
    xhr = new XMLHttpRequest(); 
    } else if (window.ActiveXObject) { 
    try { 
     xhr = new ActiveXObject("Msxml2.XMLHTTP"); 
    } catch(e) { 
     try { 
     xhr = new ActiveXObject("Microsoft.XMLHTTP"); 
     } catch(e) { 
     xhr = false; 
     } 
    } 
    } 
    return xhr; 
}