通过XML的AJAX在Chrome / Firefox中不起作用

时间:2011-05-15 14:27:53

标签: xml ajax google-chrome activex

我有以下代码:

var xmlCurr = new ActiveXObject("Microsoft.XMLDOM");
xmlCurr.async = false;
xmlCurr.load(xmlURL);
return xmlCurr;

从xmlCurr我需要以下信息

xmlCurr.xml
xmlCurr.documentElement
xmlCurr.selectSingleNode("result").text;

此代码适用于IE6 +,但不适用于Chrome或Firefox。

我尝试过修改代码 http://www.w3schools.com/Xml/xml_parser.asp

获得以下内容:

if (window.XMLHttpRequest)
    {// code for IE7+, Firefox, Chrome, Opera, Safari
     xmlCurr=new XMLHttpRequest();
    }
else
    {// code for IE6, IE5
       xmlCurr=new ActiveXObject("Microsoft.XMLHTTP");
    }
xmlCurr.open("GET",xmlURL,false);
xmlCurr.send();
xmlCurr.xml=xmlCurr.responseXML;
return xmlCurr;

但无济于事...... 有没有人有任何想法?

更新

我的代码似乎根本没有运行AJAX。

responseText =“\ r \ n”
statusText =“OK”
我不知道如何确定MIME类型。但是responseXML.xml =“”

更新

感谢abieganski提出http://xkr.us/code/javascript/XHConn/的建议 我不得不做一些调整,但它现在几乎正在工作......

  1. 出于某种原因 - 我认为我的网站设计方式 - 我必须将函数更改为同步而不是使用回调函数异步

  2. 我不明白为什么但是我得到了responseText而不是responseXML。因此selectSingleNode不起作用。因此,我不得不编写一段脏代码而不是selectSingleNode

    function selectSingleNode2(aXML,aNode) {
      aNode=aNode.substr(2,aNode.length-2);
      var b1=aXML.indexOf("<"+aNode+">")+aNode.length+2;
      var b2=aXML.indexOf("</"+aNode+">");
      var b3=aXML.substr(b1,b2-b1);
      return b3; 
    }
    
  3. 任何想法为什么? 谢谢!

2 个答案:

答案 0 :(得分:0)

您可能需要查看xmlCurr.responseText吗?

答案 1 :(得分:0)

我会使用一些东西来抽象IE和其他浏览器之间关于XMLHTTP对象的差异。

简单的事情是: http://xkr.us/code/javascript/XHConn/

或者您可以使用jQuery的ajax方法。