IE не находит объект XMLHttpRequest

Модератор: Модераторы разделов

IMB
Сообщения: 2567
ОС: Debian

IE не находит объект XMLHttpRequest

Сообщение IMB »

Доброго дня!
Есть код на JS написанный с использованием jQuery 1.4.2. На данный момент работоспособност проверена в FireFox и Chrome.
Есть проблема в IE8, пробовал переводить в режим совместимости с 7 - не помогает, при обработке xml ответа - сообщается о отсутсвии объекта.
Прочитав документация по jQuery.ajax() я нашёл, что можно создать свою фукцию для создания объекта XMLHttpRequest. На сайте MSD было обнаружение описание объекта XMLHttpRequest применительно к IE7 (http://msdn.microsoft.com/en-us/library/ms535874%28VS.85%29.aspx). Использую эти данные написал следующий код:

Код: Выделить всё

xhr: function() {
            if(window.XMLHttpRequest) {
                return new XMLHttpRequest()
            } else {
                /*try {
                    return new ActiveXObject("MSXML2.XMLHTTP.3.0")
                }
                catch(e) {
                    return null
                }*/
                try { return new ActiveXObject("Msxml2.XMLHTTP.6.0"); }
                      catch(e) {}
                try { return new ActiveXObject("Msxml2.XMLHTTP.3.0"); }
                      catch(e) {}
                try { return new ActiveXObject("Msxml2.XMLHTTP"); }
                      catch(e) {}
                try { return new ActiveXObject("Microsoft.XMLHTTP"); }
                      catch(e) {}
            }
        }

Обработка ответа сервера происходит следующим образом:

Код: Выделить всё

complete: function(XMLHttpRequest, textStatus) {
            if (200 == XMLHttpRequest.status) {
                var p = XMLHttpRequest.responseXML.
                        documentElement.childNodes[1].firstChild
                $('#manuf').text(p.firstChild.textContent);
                $('#model').text(p.childNodes[1].textContent);
                $('#firm').text(p.childNodes[2].textContent);
                $('#serial').text(p.childNodes[3].textContent);
                $('#hw').text(p.lastChild.textContent);
            } else
                $('#err').html('<font color = "red"><strong>' +
                    'Information about device not available!' +
                    '</strong></font>');

        }

Вопрос - как необходимо создать объект XMLHttpRequest для InternetExplorer?
Спасибо.
Спасибо сказали:
Аватара пользователя
nickm
Сообщения: 203
ОС: RFRemix

Re: IE не находит объект XMLHttpRequest

Сообщение nickm »

Так ie7 не находит?

Из приведенной ссылки
The XMLHttpRequest property is available on the window object in Internet Explorer 7.
***
To support versions of Internet Explorer prior to Internet Explorer 7, use the following function to get the XMLHttpRequest object:

Код: Выделить всё

function getXMLHttpRequest()
{
    if (window.XMLHttpRequest) {
        return new window.XMLHttpRequest;
    }
    else {
        try {
            return new ActiveXObject("MSXML2.XMLHTTP.3.0");
        }
        catch(ex) {
            return null;
        }
    }
}


В версиях до ие7 заместо XMLHttpRequest используется ActiveXObject("MSXML2.XMLHTTP.3.0"); который у Вас закоментирован (т.е. обломается на до ie7 версиях)

Кстати, что мешает использовать http://api.jquery.com/jQuery.ajax/ ?

http://plugins.jquery.com/project/XHR вроде как устаревший
Спасибо сказали:
IMB
Сообщения: 2567
ОС: Debian

Re: IE не находит объект XMLHttpRequest

Сообщение IMB »

nickm писал(а):
12.08.2010 11:34
Так ie7 не находит?

Не находит IE8, пробовал в нативном режиме и режиме совместимости с IE7. Более раних версий не имею, да и не актуальны они.

nickm писал(а):
12.08.2010 11:34
Кстати, что мешает использовать http://api.jquery.com/jQuery.ajax/ ?

Именно его и использую.
Спасибо сказали:
Аватара пользователя
serzh-z
Бывший модератор
Сообщения: 8259
Статус: Маньяк
ОС: Arch, Fedora, Ubuntu

Re: IE не находит объект XMLHttpRequest

Сообщение serzh-z »

IMB
XML-парсер MSXML должен быть установлен в системе. Можно установить, кажется, через wintricks.
Спасибо сказали:
IMB
Сообщения: 2567
ОС: Debian

Re: IE не находит объект XMLHttpRequest

Сообщение IMB »

Для парсинга броузером необходим XML-парсер? Странно, а как тогда работаю FireFox, Chrome и Opera? Но не суть, в системе установлен MSXML Parser (4.0SP2 и 6.0).
Нет, тут проблема в другом - сам запрос удачно выполняется и я могу просмотреть XMLHttpRequest.responseText, как через вызов alert в JS, так и в отладчике InternetExplorer8, но вызов childNode почему то возвращает null, что не допустимо.
Спасибо сказали:
Аватара пользователя
serzh-z
Бывший модератор
Сообщения: 8259
Статус: Маньяк
ОС: Arch, Fedora, Ubuntu

Re: IE не находит объект XMLHttpRequest

Сообщение serzh-z »

IMB писал(а):
12.08.2010 13:56
Для парсинга броузером необходим XML-парсер? Странно, а как тогда работаю FireFox, Chrome и Opera? Но не суть, в системе установлен MSXML Parser (4.0SP2 и 6.0).
Да. Разработчики браузеров, отличных от IE, переняли идею Microsoft по использованию ActiveX XMLHttpRequest и встроили объект XMLHttpRequest (с интерфейсом, аналогичным MSXML XMLHttpRequest), в свои браузеры.

А на что похож responseText?
Спасибо сказали:
IMB
Сообщения: 2567
ОС: Debian

Re: IE не находит объект XMLHttpRequest

Сообщение IMB »

serzh-z писал(а):
12.08.2010 14:17
А на что похож responseText?

Там содержится полностью XML-документ.
Спасибо сказали:
Аватара пользователя
serzh-z
Бывший модератор
Сообщения: 8259
Статус: Маньяк
ОС: Arch, Fedora, Ubuntu

Re: IE не находит объект XMLHttpRequest

Сообщение serzh-z »

IMB писал(а):
12.08.2010 14:19
Там содержится полностью XML-документ.
Просмотрел все посты - не вижу документа.

documentElement не null?
Спасибо сказали:
IMB
Сообщения: 2567
ОС: Debian

Re: IE не находит объект XMLHttpRequest

Сообщение IMB »

Ответ выводимый в Firebug:

Код:

<?xml version="1.0" encoding="UTF-8"?> <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://www.w3.org/2003/05/soap-envelope" xmlns:SOAP-ENC="http://www.w3.org/2003/05/soap-encoding" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:c14n="http://www.w3.org/2001/10/xml-exc-c14n#" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" xmlns:ds="http://www.w3.org/2000/09/xmldsig#" xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" xmlns:wsa5="http://www.w3.org/2005/08/addressing" xmlns:wsrf="http://docs.oasis-open.org/wsrf/r-2" xmlns:soapenv="http://www.w3.org/2003/05/soap-envelope" xmlns:ter="http://www.onvif.org/ver10/error" xmlns:tns1="http://www.onvif.org/ver10/topics" xmlns:xmime5="http://www.w3.org/2005/05/xmlmime" xmlns:tt="http://www.onvif.org/ver10/schema" xmlns:wsrf-bf="http://docs.oasis-open.org/wsrf/bf-2" xmlns:wstop="http://docs.oasis-open.org/wsn/t-1" xmlns:tan-ae="http://www.onvif.org/ver10/analytics/wsdl/AnalyticsEngineBinding" xmlns:tan-re="http://www.onvif.org/ver10/analytics/wsdl/RuleEngineBinding" xmlns:tan="http://www.onvif.org/ver10/analytics/wsdl" xmlns:tds="http://www.onvif.org/ver10/device/wsdl" xmlns:tev-cpp="http://www.onvif.org/ver10/events/wsdl/CreatePullPointBinding" xmlns:tev-e="http://www.onvif.org/ver10/events/wsdl/EventBinding" xmlns:tev-nc="http://www.onvif.org/ver10/events/wsdl/NotificationConsumerBinding" xmlns:tev-np="http://www.onvif.org/ver10/events/wsdl/NotificationProducerBinding" xmlns:tev-pp="http://www.onvif.org/ver10/events/wsdl/PullPointBinding" xmlns:tev-pps="http://www.onvif.org/ver10/events/wsdl/PullPointSubscriptionBinding" xmlns:tev="http://www.onvif.org/ver10/events/wsdl" xmlns:tev-psm="http://www.onvif.org/ver10/events/wsdl/PausableSubscriptionManagerBinding" xmlns:wsnt="http://docs.oasis-open.org/wsn/b-2" xmlns:tev-sm="http://www.onvif.org/ver10/events/wsdl/SubscriptionManagerBinding" xmlns:timg="http://www.onvif.org/ver10/imaging/wsdl" xmlns:trt="http://www.onvif.org/ver10/media/wsdl"><SOAP-ENV:Header></SOAP-ENV:Header><SOAP-ENV:Body><tds:GetNetworkInterfacesResponse><tds:NetworkInterfaces xsi:type="tt:NetworkInterface" token="eth0"><tt:Enabled>true</tt:Enabled><tt:Info><tt:Name>eth0</tt:Name><tt:HwAddress>00:01:02:03:04:05</tt:HwAddress><tt:MTU>1500</tt:MTU></tt:Info><tt:Link><tt:AdminSettings><tt:Autonegoation>true</tt:Autonegoation><tt:Speed>100</tt:Speed><tt:Duplex>Full</tt:Duplex></tt:AdminSettings><tt:OperSettings><tt:Autonegoation>true</tt:Autonegoation><tt:Speed>100</tt:Speed><tt:Duplex>Full</tt:Duplex></tt:OperSettings><tt:InterfaceType>0</tt:InterfaceType></tt:Link><tt:IPv4><tt:Enabled>true</tt:Enabled><tt:Config><tt:Manual><tt:Address>192.168.10.253</tt:Address><tt:PrefixLength>24</tt:PrefixLength></tt:Manual><tt:FromDHCP><tt:Address>192.168.10.253</tt:Address><tt:PrefixLength>24</tt:PrefixLength></tt:FromDHCP><tt:DHCP>true</tt:DHCP></tt:Config></tt:IPv4></tds:NetworkInterfaces></tds:GetNetworkInterfacesResponse></SOAP-ENV:Body></SOAP-ENV:Envelope>

Прикладываю screenshot из средства разработчика InternetExplore8 - documentElement null и если раскрыть childNodes item имеет значение 'Недопустимое количество параметров'.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Спасибо сказали:
Аватара пользователя
serzh-z
Бывший модератор
Сообщения: 8259
Статус: Маньяк
ОС: Arch, Fedora, Ubuntu

Re: IE не находит объект XMLHttpRequest

Сообщение serzh-z »

IMB писал(а):
12.08.2010 15:24
Прикладываю screenshot из средства разработчика InternetExplore8 - documentElement null и если раскрыть childNodes item имеет значение 'Недопустимое количество параметров'.
Стоит заглянуть в массив parseError, ибо textStatus == "parseerror".
Спасибо сказали:
IMB
Сообщения: 2567
ОС: Debian

Re: IE не находит объект XMLHttpRequest

Сообщение IMB »

serzh-z писал(а):
12.08.2010 16:38
Стоит заглянуть в массив parseError, ибо textStatus == "parseerror".

Видел, как исправить? Код проверил в FireFox, Chrome и Opera, только IE имеет своё собственное мнение. Как придти с ним к консенсусу?
Спасибо сказали:
Аватара пользователя
serzh-z
Бывший модератор
Сообщения: 8259
Статус: Маньяк
ОС: Arch, Fedora, Ubuntu

Re: IE не находит объект XMLHttpRequest

Сообщение serzh-z »

IMB писал(а):
12.08.2010 16:46
Видел, как исправить? Код проверил в FireFox, Chrome и Opera, только IE имеет своё собственное мнение. Как придти с ним к консенсусу?
Что в массиве parseError?
Спасибо сказали:
IMB
Сообщения: 2567
ОС: Debian

Re: IE не находит объект XMLHttpRequest

Сообщение IMB »

serzh-z писал(а):
12.08.2010 17:15
Что в массиве parseError?

Ничего, прикладываю скрин.
P.S. Кстати, может кто-нибудь подскажет плагин для FireFox позволяющий подобным образом разложить XML?
Нашёл только XML Developer Toolbar (https://addons.mozilla.org/ru/firefox/addon/2897/), но он не подходит для FireFox 3.5.6, да и срок последнего обновления 2007 год.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Спасибо сказали:
Аватара пользователя
serzh-z
Бывший модератор
Сообщения: 8259
Статус: Маньяк
ОС: Arch, Fedora, Ubuntu

Re: IE не находит объект XMLHttpRequest

Сообщение serzh-z »

IMB писал(а):
13.08.2010 09:17
P.S. Кстати, может кто-нибудь подскажет плагин для FireFox позволяющий подобным образом разложить XML?
Firebug
Спасибо сказали:
IMB
Сообщения: 2567
ОС: Debian

Re: IE не находит объект XMLHttpRequest

Сообщение IMB »

serzh-z писал(а):
14.08.2010 02:44
IMB писал(а):
13.08.2010 09:17
P.S. Кстати, может кто-нибудь подскажет плагин для FireFox позволяющий подобным образом разложить XML?
Firebug

Ну не знаю, у меня Firebug не раскладывает ответ сервера, выводит plain text, хотя сам запрос слегка структурирует и посвечивает синтаксис.
Спасибо сказали: