【问题标题】:AJAX via XML doesn't work in Chrome/Firefox通过 XML 的 AJAX 在 Chrome/Firefox 中不起作用
【发布时间】:2011-05-15 14:27:53
【问题描述】:

我有以下代码:

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

任何想法为什么? 谢谢!

【问题讨论】:

  • 具体发生了什么?响应的 MIME 类型实际上是 XML 吗?

标签: xml ajax google-chrome activex


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-01-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-10-28
      相关资源
      最近更新 更多