IE中的Ajax问题

时间:2010-11-12 07:12:48

标签: javascript ajax

我在我的应用程序中使用Ajax。它在所有浏览器中都运行良好,但在任何IE版本中都没有。这是我写的代码,请看看我告诉我哪里错了。这是代码:

<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>

2 个答案:

答案 0 :(得分: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>

它可能会稍微清理一下并解决您的交叉兼容性问题。

答案 1 :(得分:0)

使用xmlhttp.send(null)代替xmlhttp.send() 并且更好地使用

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

我们也有

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