1
if (xmlHttp.readyState==4 || xmlHttp.readyState=="complete")
     {
        var Buffer= xmlHttp.responseText;     
        Buffer= Buffer.split("#%~");    
              document.getElementById("Template").innerHTML = Buffer[0];
              document.getElementById("Template1").innerHTML = Buffer[1];
              alert(Buffer+"Buffer");

上面的代码在ie中不起作用,但在ff中可以正常工作。我什至尝试了其他选项,但无法得到它。alert 在 ie & ff 中显示相同的值,但它没有用,因为它不在 ie 中打印。谁能帮忙?

4

2 回答 2

1

Internet Explorer 没有标准XMLHttpRequest对象,因此您必须使用ActiveXObject

来自mdn的片段

var httpRequest;
if (window.XMLHttpRequest) { // Mozilla, Safari, ...
    httpRequest = new XMLHttpRequest();
} else if (window.ActiveXObject) { // IE 8 and older
    httpRequest = new ActiveXObject("Microsoft.XMLHTTP");
}

这确保 httpRequest 也在 IE 中工作。附带说明一下,您可能希望使用 insted console.logalert然后在您的开发人员工具中获得不错的输出(Windows 上的 F12)

于 2013-03-14T08:01:51.073 回答
0

您没有说明这一点,但您需要xmlHttp为某些浏览器创建不同的对象 - 尤其是 Internet Explorer:

var xhttp = function(){
  var obj = null, er = null;
  if(typeof XMLHttpRequest != 'undefined'){
    obj = new XMLHttpRequest();
  }
  else {
    try{
      obj = new ActiveXObject('Msxml2.XMLHTTP');
    }catch(er){
      try{
        obj = new ActiveXObject('Microsoft.XMLHTTP');
      }catch(er){
        obj = null;
      }
    }
  }
  return obj;
}

以下代码的用法是:

xmlHttp = xhttp();

从那时起,您可以xmlHttp以与您大致相同的方式使用,有一些陷阱/差异需要注意,这就是使用 Adrian 所说的库很好的原因。但是它甚至更好首先了解潜在的差异。

于 2013-03-14T08:02:11.277 回答