2010-11-12 70 views
1

我在我的應用程序中使用了Ajax。它在所有瀏覽器中工作正常,但不在任何IE版本中。這裏是我寫的代碼,請看看並告訴我我錯在哪裏。下面的代碼:IE中的Ajax問題

<script type="text/javascript"> 
    function loadXMLDoc(str) { 
    document.getElementById('spinner').style.display = "block"; 

    if (str == "") { 
     document.getElementById("pickZone").innerHTML = ""; 
     document.getElementById('spinner').style.display = "none"; 
     return; 
    } 



    if (window.XMLHttpRequest) { 
     xmlhttp = new XMLHttpRequest(); 
    } else if (window.ActiveXObject) { 
     try { 
     xmlhttp = new ActiveXObject("Msxml2.XMLHTTP"); 
     } 
     catch (e) { 
     try { 
      xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); 
     } 
     catch (e) { 
      xmlhttp = false; 
     } 
     } 
    } 



    xmlhttp.onreadystatechange = function() { 
     if (xmlhttp.readyState == 4 && xmlhttp.status == 200) { 
     document.getElementById('spinner').style.display = "none"; 
     document.getElementById("pickZone").innerHTML = xmlhttp.responseText; 
     } 
    } 

    xmlhttp.open("GET", "getPickZone.jsp?q=" + str, true); 
    xmlhttp.send(); 
    } 
</script> 
+0

哦其格式不:-( – Developer 2010-11-12 07:13:15

+2

@苛刻 - 我固定它下一次,選擇這一切,並按Ctrl + k – 2010-11-12 07:14:02

+0

會發生什麼?ie中的任何JavaScript錯誤?你檢查與IE開發工具,看看是否有什麼事情發生在tyhe場景背後?哪個版本的IE ?? – Shoban 2010-11-12 07:15:49

回答

5

如果你不反對使用jQuery你可以只使用:

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script> 
<script type="text/javascript"> 
function loadXMLDoc(str) { 
    $('#spinner').css({display:"block"}); 
    $('#pickZone').html(''); 
    if (str != '') { 
    $.ajax({ 
     type: "GET", 
     url: "getPickZone.jsp", 
     data: {q:str}, 
     success: function(xml) { 
     $('#spinner').css({display:"none"}); 
     $('#pickZone').html(xml); 
     } 
    }); 
    } 
} 
</script> 

它可能會清除了一點東西,解決您的跨兼容性問題。的xmlhttp.send() 和更好地利用

+0

@mistabell:謝謝你的回答mistabell,但我現在不知道jQuery。我將在稍後學習,但現在我必須使用AJAX。 – Developer 2010-11-12 07:21:29

+0

@Harsh - jQuery是一個JavaScript庫,它也可以進行Ajax調用(按照mistabell的示例)。 – 2010-11-12 07:25:22

+0

@Gert G:雅我理解,我改變了代碼,但它不工作。 mistabell可以üplz轉換我的代碼在jQuery中? – Developer 2010-11-12 07:34:20

0

使用xmlhttp.send(null)代替

xmlhttp = new ActiveXObject("MsXML2.XMLHTTP"); 

我們也有

MsXML[i] i = 1,2,3,4,5,.. 
+2

這並不清楚你的意思。 – 2012-12-13 12:28:59

+0

明確解釋爲 – Gadde 2012-12-13 12:30:11

+0

存在幾個版本的IE for this use xmlhttp = new ActiveXObject(「MsXML1.XMLHTTP」);的ActiveXObject( 「MSXML2.XMLHTTP」);的ActiveXObject( 「MsXML3.XMLHTTP」);的ActiveXObject( 「MsXML4.XMLHTTP」);等等 – 2012-12-13 12:43:18