AJAX через XML не работает в Chrome / Firefox

#xml #ajax #google-chrome #activex

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

Текст ответа = » r n»
Текст состояния = «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; 
    }
      

Есть идеи, почему?
Спасибо!

Комментарии:

1. Что конкретно происходит? Является ли MIME-тип ответа на самом деле XML?

Ответ №1:

может быть, вам нужно посмотреть на xmlCurr.responseText?

Ответ №2:

Я бы использовал что-то, что абстрагирует различия между IE и другими браузерами в отношении объекта XMLHTTP.

Что-то простое было бы:http://xkr.us/code/javascript/XHConn /

Или вы могли бы использовать ajax-метод jQuery.