Перейти к содержимому


Пользователь месяца
Андрей WPMasterKZ Андрей WPMasterKZ 1-й за Ноябрь
Очков активности: 888 1 тема, 71 сообщение, 8 баллов репутации
Сайт: wpmaster.kz
ТОП самых активных за этот месяц
  • Фотография OlgaGetman
    #1

    OlgaGetman
    Очков активности: 780 6 тем, 112 сообщений, 4 балла репутации

  • Фотография Mandarin
    #2

    Mandarin
    Очков активности: 588 3 темы, 89 сообщений, 4 балла репутации

  • Фотография TimurR
    #3

    TimurR
    Очков активности: 261 Вне конкурса за определение пользователя месяца

  • Фотография Андрей WPMasterKZ
    #4

    Андрей WPMasterKZ (wpmaster.kz)
    Очков активности: 189 Вне конкурса за определение пользователя месяца

  • Фотография Rodiola
    #5

    Rodiola
    Очков активности: 138 2 темы, 17 сообщений, 4 балла репутации

  • Фотография BLIK
    #6

    BLIK
    Очков активности: 120 0 тем, 20 сообщений, 4 балла репутации

  • Фотография WGN
    #7

    WGN (worldgamenews.com)
    Очков активности: 48 Вне конкурса за определение пользователя месяца

  • Фотография pozitron123
    #8

    pozitron123
    Очков активности: 34.5 2 темы, 17 сообщений, 1 балл репутации

  • Фотография thisismyname
    #9

    thisismyname
    Очков активности: 27 4 темы, 6 сообщений, 1 балл репутации

  • Фотография m3Re
    #10

    m3Re
    Очков активности: 22.5 2 темы, 9 сообщений, 1 балл репутации

  • Показать весь ТОП 10
Поддержите форум! =)
Апдейты
  • Яндекс ИКС: 29.11.2018
  • Яндекс выдача: 13.12.2018
Топ 5 участников по репутации


Этот чёртов AJAX

#1 Гость_Biosi_*

Гость_Biosi_*
  • Гости
0

Отправлено 11 March 2009 - 17:38

Всем доброго времени суток. Я недавно начал изучать AJAX. В процессе изучения решил создать небольшой проект, в котором будут использованы основные возможности AJAX и JavaScript в частности. В общем, проект я создал, протестировал его в Opera - всё работает! Но радовался я недолго. Ровно до того момента, как "попробовал" его в нашем родном и всеми любимом Internet Explorer 7. Здесь мой проект споткнулся о свойство объекта XMLHTTP, называемое responseXML. Именно это свойство содержит обьект document необходимого мне XML-файла, в котором хранятся нужные мне данные.

В интернете решение я не нашел. Везде пишут, что достаточно написать "responseXML.getElementsByTagName('имя тэга')" и будет мне счастье. Но счастья нет, потому как в IE это не работает ;)
Уж я пытался и через .body, и через .documentElement, но нет, пропарсить искомый XML мне никак не удается.

Вот небольшой примерчик, который сам по себе ни какого смысла не имеет, кроме того, что иллюстрирует мою проблему.

1) Файл XML (testResponse.xml):

<?xml version="1.0" encoding="windows-1251"?>
<resp>OK!</resp>

2) Файл со скриптом, который будет пытаться парсить вышеозначенный xml (testResponse.html):

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
<title>Тест</title>
</head>
<body>
<script language="javascript" type="text/javascript">
function getXmlHttp(){
	var xmlhttp;
	try {
		xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
	} catch (e) {
		try {
			xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
		} catch (E) {
			xmlhttp = false;
		}
	}
	if (!xmlhttp && typeof XMLHttpRequest != 'undefined') {
		xmlhttp = new XMLHttpRequest();
	}
	return xmlhttp;
}
var xmlhttp = getXmlHttp();
xmlhttp.open('GET', 'testResponse.xml', true);
xmlhttp.onreadystatechange = function() {
  if (xmlhttp.readyState == 4) {
	 if((xmlhttp.status == 200) || (xmlhttp.status == 0)) {
	   alert(xmlhttp.responseText);
	   var childEl = document.createElement('div');
	   // ВОТ ЭТА СТРОКА, КОТОРАЯ ПРЕДСТАВЛЯЕТ ПРОБЛЕМУ:
	   childEl.innerHTML = xmlhttp.responseXML.getElementsByTagName('resp').item(0).firstChild.data;
	   document.body.appendChild(childEl);
		 }
  }
};
xmlhttp.send(null);
alert('Конец скрипта');
</script>
</body>
</html>

ПОМОГИТЕ, а?

 

 

  • 0

#2 ZiTosS

ZiTosS
  • Неактивные
  • 5148 сообщений
  • Репутация: 8

Отправлено 12 March 2009 - 10:52

Да уж я переписал
xmlObj=xmlhttp.responseXML.documentElement;
childEl.innerHTML = xmlObj.firstChild.data;
Работает в FF, но не работает в IE7. Я обычно XML не возвращаю, приду вечером, почитемс ещё ;)
  • 0

#3 Гость_Biosi_*

Гость_Biosi_*
    Topic Starter
  • Гости

Отправлено 12 March 2009 - 12:58

Спасибо, что помогли переформатировать моё сообщение в более удобочитаемый вид. Да, давненько я на форумах не общался, забыл уже как чё делается. Но, к сожалению, действительно IE7 остался непобедимым - XML так и не парсится.
  • 0

#4 KURT [197BD]

KURT [197BD]
  • Неактивные
  • 31 сообщений
  • Репутация: 0

Отправлено 12 March 2009 - 18:17

наверно проблемма в том что IE для тега DIV не поддерживает свойство innerHTML? попробуйте использовать тег SPAN

вместо
...
var childEl = document.createElement('div');
...
использовать
...
var childEl = document.createElement('span');
...

  • 0

#5 Гость_Biosi_*

Гость_Biosi_*
    Topic Starter
  • Гости

Отправлено 12 March 2009 - 18:26

Нет, дело не в этом. Обычный текст (не responseXML) данный скрипт добавляет спопкорно.

На других форумах я узнал, что responseXML, к сожалению, то ли сильно глючит, то ли просто не поддерживается IE. По-видимому, придётся использовать responseText, а вместо XML брать JSON (для удобства).


  • 0

#6 Гость_Biosi_*

Гость_Biosi_*
    Topic Starter
  • Гости

Отправлено 12 March 2009 - 21:17

В общем я пришел к выводу о невозможности корректного использования responseXML. В ходе разбирательств выяснилось что данный метод не работает в Эксплорере. Выходом из этой ситуации вижу использование responseText, а чтобы проще мне было - вместо XML буду использовать JSON. Всем спасибо, вопрос решен.
  • 0

#7 ZiTosS

ZiTosS
  • Неактивные
  • 5148 сообщений
  • Репутация: 8

Отправлено 13 March 2009 - 22:36

Это вам спасибо за пояснения, но всё же...
В общем я пришел к выводу о невозможности корректного использования responseXML. В ходе разбирательств выяснилось что данный метод не работает в Эксплорере.
Ваше высказывание о неработоспособности метода responseXML не точно. Данный метод возвращает object [xmlDOMdocument], проверенно лично мной. А вот уже кривость работы в IE с данным объектом очень даже возможна. Не зря осла прозвали ослом.

Кстати я нашёл рабочий пример
_http://www.howtocreate.co.uk/tutorials/jsexamples/importingXML.html
сам файл с функцией
_http://www.howtocreate.co.uk/jslibs/importxml.js

Стоит только переделать под свои нужды ;)
  • 0



Похожие темы

  Название темы Автор Статистика Последнее сообщение

Оформление форума – IPBSkins.ru