IE对xmlhttprequest有什么看法?

时间:2011-02-02 05:18:41

标签: javascript ajax

我现在有以下代码在所有浏览器中工作但是IE8 ..我读过如果我使用xhttp = new ActiveXObject(“Microsoft.XMLHTTP”);它应该适用于IE,但我不确定。任何人都有使用ie8

的经验
function loadXMLDoc(dname)
{
if (window.XMLHttpRequest)
 {
 xhttp=new XMLHttpRequest();
 }
else
 {
 xhttp=new ActiveXObject("Microsoft.XMLHTTP");
 }
xhttp.open("GET",dname,false);
xhttp.send();
return xhttp.responseXML;
} 

var xmlDoc = loadXMLDoc("nhl_standings_xml.xml");
var x = xmlDoc.getElementsByTagName("nhlall");

3 个答案:

答案 0 :(得分:0)

嗯,代码看起来还不错。您是否尝试过Asynchronous请求?当你有xhttp.open("GET", dname, false);时,它是同步的。将false更改为true,您就是异步的。另外,变量xhttp未正确声明(如果我错了,请纠正我。作为Python编码器,我不能分辨一半时间。)

试试这段代码:

function loadXML(url)
{
  var xmlHttp;

  try
  {
    // Firefox, Opera 8.0+, Safari
    xmlHttp = new XMLHttpRequest();
  } catch (e) {
    // Internet Explorer
    try
    {
      xmlHttp = new ActiveXObject("Msxml2.XMLHTTP");
    } catch (e) {
      try
      {
        xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
      } catch (e) {
        return false;
      }
    }
  }

  xmlHttp.onreadystatechange = function()
  {
    if(xmlHttp.readyState == 4)
    {
      return xmlHttp.responseText;
    }
  }

  xmlHttp.open("GET", url, true);
  xmlHttp.send(null);
}

var xmlDoc = loadXML("nhl_standings_xml.xml");
var x = xmlDoc.getElementsByTagName("nhlall");

答案 1 :(得分:0)

我建议你使用MINIMAL ajax引擎。

http://pastebin.com/uXJe9hVC

usuage的一个例子

ajax POST请求

Ajax.call('GET','http://localhost/index.php',function(data) {
{
 //doing stuff with the data response
},'ASD');

调用参数:URL,回调,POST

这很容易。

答案 2 :(得分:0)

尝试将其作为请求启动器:

  if      (window.XMLHttpRequest) return new window.XMLHttpRequest();
  else if (window.ActiveXObject) {
     // the many versions of IE's XML fetchers
     var AXOs = [
        'MSXML2.XMLHTTP.6.0',
        'MSXML2.XMLHTTP.5.0',
        'MSXML2.XMLHTTP.4.0',
        'MSXML2.XMLHTTP.3.0',
        'MSXML2.XMLHTTP',
        'Microsoft.XMLHTTP',
        'MSXML.XMLHTTP'
     ];
     for (var i = 0; i < AXOs.length; i++) {
        try     { return new ActiveXObject(AXOs[i]); }
        catch() { continue; }
     }
     return null;
  }

上面的顺序应该是正确的从最差到最差的顺序,BTW。