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


Пользователь месяца
ShowPrint ShowPrint 1-й за Сентябрь
Очков активности: 283 2 темы, 21 сообщение, 7 баллов репутации
Сайт: ShowPrint.ru
ТОП самых активных за этот месяц
  • Фотография Medvedoc
    #1

    Medvedoc
    Очков активности: 510 9 тем, 58 сообщений, 4 балла репутации

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

    ShowPrint (ShowPrint.ru)
    Очков активности: 312 Вне конкурса за определение пользователя месяца

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

    Ixman (o5cat.ru)
    Очков активности: 216 0 тем, 24 сообщения, 6 баллов репутации

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

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

  • Фотография Игорь Ку
    #5

    Игорь Ку (dudesday.ru)
    Очков активности: 126 4 темы, 9 сообщений, 4 балла репутации

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

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

  • Фотография Алексей111
    #7

    Алексей111 (xvideo24.ru)
    Очков активности: 66 8 тем, 20 сообщений, 1 балл репутации

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

    yuran (yurbol.ru)
    Очков активности: 37.5 1 тема, 22 сообщения, 1 балл репутации

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

    Zevss (domles43.ru)
    Очков активности: 22.5 2 темы, 9 сообщений, 1 балл репутации

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

    falka (mygoodjob.ru)
    Очков активности: 16.5 3 темы, 2 сообщения, 1 балл репутации

  • Показать весь ТОП 10

Kwork.ru - услуги фрилансеров от 500 руб.

Поддержите форум! =)
Апдейты
  • Яндекс тИЦ: 26.09.2018
  • Яндекс выдача: 20.10.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