объект getElementsByTagName требуется? Действительно застрял! - PullRequest
0 голосов
/ 22 июня 2010

Попытка сделать базовый поиск XML. Код работает, как и ожидалось, в Firefox и Opera, то есть он предупреждает текстовым значением узла title из документа XML. Но в IE7 я получаю "объект требуется" из этой строки.

  x=xhttp.responseXML.getElementsByTagName("title")[0].childNodes[0].nodeValue;
  alert(x);

Кстати, он работал нормально с responseText (и txt-файлом). Но у меня было , чтобы использовать ActiveX Object для работы в IE ... странно, потому что я думал, что он поддерживает объект XMLHttprequest. Может быть, это как-то связано с этим?

[править]

хорошо, я заменил строку этим

    x=xhttp.responseXML.childNodes.length;
    alert(x);

в FF есть 2 узла, в IE - 0. Поэтому очевидно, что он не может читать 0 дочерних узлов. Я думаю, это связано с пробелами? Что дает?

[обновление]

Все это связано с моим незнанием того, как использовать msxml.DOMDocument и Msxml.XMLHTTP ActiveXObjects. Я узнаю об этих объектах по следующей ссылке:

Программа с DOM на JScript

и ответит на мой вопрос через несколько дней ...

Ответы [ 2 ]

1 голос
/ 25 июня 2010

Я понял это.Я не упомянул, что до сих пор разрабатываю это из папок на моем жестком диске.Это была проблема.Я хотел бы процитировать «Ультиматор», чей ответ я обнаружил на webdeveloper.com в этой теме: http://www.webdeveloper.com/forum/showthread.php?t=147342

Собственный в IE7 XMLHttpRequest бессилен даже для файла в том же каталоге, но вВ той же ситуации ActiveX сможет нормально обслуживать IE7.Причина в том, что объект IE7 XMLHttpRequest ограничен сетью.Следовательно, ваша ошибка «доступ запрещен в IE7», поскольку IE7 в вашем коде обслуживается через XMLHttpRequest, а не через ActiveX.Объект Firefox XMLHttpRequest, с другой стороны, разрешает как локальные запросы, так и запросы в Интернете.

На самом деле, я даже не понимаю, почему требуемый объект происходил.Некоторое время я переключался на использование только объекта msxml.DOMDocument.3.0, и я получил это, работая локально.Затем я продолжал читать о том, как XMLHttpRequest поддерживается в IE7, поэтому я вернулся к работе над этим объектом.Прочитав учебники по MSDN, я заметил, что они предложили создать «виртуальный каталог» и использовать файлы на

http://localhost.

Тогда у меня возникла идея, ну почему я не могу просто указать где-нибудь Запросв Интернете?И я сделал: к образцу XML-файла на w3schools.Угадай, что?Это работало в IE7, и я смог получить нужный текст с помощью selectSingleNode.Но в Firebug сказано, что xmlDoc.responseXML имеет значение null.Интересно ...

Итак, в конце концов я решил активировать IIS на своей машине (у меня Vista Home Premium) и использовать localhost.Это сработало!FF, IE, Chrome и Opera обращались к файлам одинаково.Итак, урок, который я усвоил: вы можете использовать localhost для имитации поведения сервера, что полезно при локальной разработке.

Поскольку FF не имеет доступа к удаленному файлу, а IE может получить к нему доступ, я неЭто правда ... ну, пока моя проблема решена, я сообщу о будущих разочарованиях.Спасибо за чтение!

0 голосов
/ 24 июня 2010

Нет причин, по которым это не должно работать, например:

var xml = response.responseXML, 
    node = xml.getElementsByTagName('child')[0];

alert(node.childNodes.length);

Использование следующего XML

<root>
    <child>
        <foo />
    </child>
</root>

Когда я запускаю его в IE7, он правильно показывает 1.Вы правильно устанавливаете тип содержимого ответа text / xml?

...