Javascript-форум (https://javascript.ru/forum/)
-   Библиотеки/Тулкиты/Фреймворки (https://javascript.ru/forum/library-toolkit-framework/)
-   -   небольшая проблема с XHR запросом (https://javascript.ru/forum/library-toolkit-framework/4328-nebolshaya-problema-s-xhr-zaprosom.html)

thunder2 11.07.2009 22:54

небольшая проблема с XHR запросом
 
Прошу тапками не кидаться. Я начинающий в этом деле, дается всё с каким-то невероятным трудом. Тут утнулся в проблему. Суть в следующем:
на этом сайте нашел описание что есть XHR запрос, как работает и всё такое. использую код из примеров опубликованных тут же.

выполняю синхронный запрос, в ответ получаю следующий ответ
<html><head>
<meta http-equiv="Content-Type" content="text/xml; charset=windows-1251">
<link href="b2b_ccs.css" rel="stylesheet" type="text/css">
</head><body>
<form id="form1" name="form1" action="" method="post">
<input type="hidden" id="client_id" value="_JK76DGHD">
<input type="hidden" id="errors" value="0">
</form>
</body></html>

в статье сказано чтобы браузер распарсил отет в XML надо в заголовке указать content="text/xml, проверяю свойство xmlHttp.responseXML!=null, условие выполняется, значит браузер ответ распарсил.
Далее в статье сказано что после этого со свойством responseXML можно работать как document, т.е. строка xmlHttp.responseXML.getElementById("errors").value для нашего ответа должно вернуть "0" вместо этого браузер сообщет об ошибке, что данные метод не поддердивается объектом. Вот собственное вопрос: где коряга.
P.S. пробовал делать так var _er=xmlHttp.responseXML.getElementById("errors"), не нравиться именно "getElementById".

Kolyaj 12.07.2009 16:09

Цитата:

Сообщение от thunder2
в статье сказано чтобы браузер распарсил отет в XML надо в заголовке указать content="text/xml

Чтобы браузер распарсил XML, ему, как минимум, нужно передать XML, а не HTML.

thunder2 15.07.2009 11:58

дык я ж в ответ вставил content="text/xml" или что-то имеется ввиду другое ? Может не так надо делать ?

Kolyaj 15.07.2009 12:06

Вы передаете не XML.

thunder2 15.07.2009 16:38

хм... понятно. А вот вопрос тогда такой, а XHR вообще html не понимает ? Т.е. что работать с ответом как с куском HTML мне надо формировать ответ в другой форме (например убрать теги html, header, body и оставить тег form) и полученный ответ вставить в документ например document.write или element.innerText=... я правильно понял ?

Kolyaj 15.07.2009 16:43

Для этого у xhr есть свойство responseText.

thunder2 20.07.2009 16:12

А не подскажите почему происходит следующее: есть IFRAME следующей записи
<IFRAME id="tree" src="http://localhost....">Ваш браузер не поддреживает IFRAME</IFRAME>
Вот то что src= бла-бла возвращает HTML со структуированым списком. В этой возвращенной html есть ссылка на таблицу связи. Но браузер отображает этот ответ как будто не находит указанный файл с CCS. Пробовал сделать следующее: когда ответ получен просматриваю исходный вид того что во фрейме(в IE есть такое по правой кнопеке мыши), копирую всё это в новый отдельный файл, скажем 1.html и выше указанном фрейме src делаю так src="1.html". Файл 1.html кладу в ту же папку что и отсновную страницу. В этом случае все показывается гуд.
Лечится это только включением в ответ всех используемых таблиц стилей. Как это исправить ?

eee08 03.08.2009 11:03

Цитата:

Сообщение от Kolyaj (Сообщение 24220)
Чтобы браузер распарсил XML, ему, как минимум, нужно передать XML, а не HTML.


HTML - подмножество XML так что дело тут в другом.

Как я понимаю responseXML не Null - значит что-то он да содержит. например, имеем:

<tag id="id">текст</tag>

в FF:


responseXML.getElementById("x") = Null
responseXML.getElementById("x").textContent = Неопределено

responseXML.getElementsByTagName("tag")[0] = tag
responseXML.getElementsByTagName("tag")[0].textContent = текст

т.е. может если захочет, а вот IЕ ваще никак.
Может быть кто-то реально в этом разобрался с EI? Поделитесь.

B~Vladi 03.08.2009 11:18

Цитата:

Сообщение от eee08
HTML - подмножество XML так что дело тут в другом.

Не значит, что это одно и то же. Не извесно, как кто будет себя вести в таких ситуациях, так что передавайте xml (<?xml ?>)

eee08 03.08.2009 11:32

пробовал - то же самое


Часовой пояс GMT +3, время: 07:04.