• 15 апреля стартует «Курс «SQL-injection Master» ©» от команды The Codeby

    За 3 месяца вы пройдете путь от начальных навыков работы с SQL-запросами к базам данных до продвинутых техник. Научитесь находить уязвимости связанные с базами данных, и внедрять произвольный SQL-код в уязвимые приложения.

    На последнюю неделю приходится экзамен, где нужно будет показать свои навыки, взломав ряд уязвимых учебных сайтов, и добыть флаги. Успешно сдавшие экзамен получат сертификат.

    Запись на курс до 25 апреля. Получить промодоступ ...

Этот чёртов Ajax. Проблема с Ie

  • Автор темы Biosi
  • Дата начала
Статус
Закрыто для дальнейших ответов.
B

Biosi

Всем доброго времени суток. Я недавно начал изучать 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>

ПОМОГИТЕ, а?
 
E

etc

xmlhttp.responseText и больше responseXML не делайте, а то "снег голова упадет, совсем больно будет" (с) :(
 
B

Biosi

xmlhttp.responseText и больше responseXML не делайте, а то "снег голова упадет, совсем больно будет" (с)

Я бы с радостью, но если я буду разбирать сложный XML с помощью responseText, то, возможно, у меня не только "снег голова упадет", но и всё остальное отвалится! :(
 
E

etc

А мышки плакали, но продолжали прыгать на кактусы ...
 
E

etc

Не, яж на кактусы не прыгаю, я точно знаю что к чему!
 
B

Biosi

Проблема заключается в том, что мне нужно разбирать XML - файлы, хранящие много информации. Т.е. много элементов - сотни. Неприемлемо работать с текстовой строкой в этом случае. Вот я и пытаюсь научиться использовать responseXML... Неужели ни кто из посетителей этого форума не может мне помочь? Люди, отзовитесь!
 
E

etc

млин ... вам что не понятно в первом моем посте? какой нафик responseXML?
забудьте, как будто его и нет вовсе, и небыло никогда, и да прибудет с вами щасте :rolleyes:


а работать с респонзом можно по разному, от того что в названии есть "текст" не должно ограничивать программиста, у вас есть мощный инструмент - javascript
 
B

Biosi

млин ... вам что не понятно в первом моем посте? какой нафик responseXML?
Уважаемый etc, я Вашу мысль понял. Спасибо Вам за нее. Но всё же я хотел бы разобраться, как работает responseXML, если это, конечно, возможно. Может быть, кто-то поможет мне в этом?
 
E

etc

Может быть, кто-то поможет мне в этом?
Врятли, вам уже ничего не поможет ... :rolleyes: если простая логика вам отказывает ...
Еще раз, с responseXML нельзя работать!!!! впринципе!!! т.к. это ничего не гарантирует!!!
это как деление на ноль запрещено, т.е. вы конечно можете делить на ноль, но это уже как с мышками - обколитель в кровь и только.
а вот responseText - наоборот, уж незнаю сейчас стало яснее или нет ?

Ну за наезд конечно извините, но вы уж и сами ... "уперлись рогом, хочу и все тут".
 
B

Biosi

Весьма прискорбен сей факт, уважаемый! :rolleyes:
 
E

etc

Факт того что на ноль делить нельзя? я принимаю такие вещи как есть и не парюсь :rolleyes:
 
B

Biosi

Да всё прискорбно. И то что по-видимому responseXML - безнадёжно глючная штука, и то что Вы на меня "наехали". И то что на ноль делить нельзя - а хотелось бы! Да и мышек жалко - им ведь больно!... :rolleyes:
 
B

Biosi

В общем с учётом того что кроме любезно согласившегося со мной побеседовать господина etc ни кто больше не соизволил поучавствовать, так и положим: скрипач идёт далеко и на долго. Т.е. responseXML использовать крайне нежелательно. А значит придётся поднатужиться и, встав враскоряку, переваривать информацию с помощью responseText. А чтобы совсем не свихнуться, вместо XML буду работать с JSON. Спасибо. Тема исчерпана.
 
E

etc

Т.е. responseXML использовать крайне нежелательно
Вы всетаки какойто "не русский" ... яж вам черным по белому рассказал, что его правильные браузеры выкинули и нет его, потому что он нафик не нужен, только замедляет работу а пользы - пшик.
 
A

abraner

Сомневаюсь, что IE правильный браузер )

Проблема в том, что IE до конца "не понимает", что это xml данные.

Долго мучился с аналогичной проблемой, пока в скрипте, который формирует xml данные не вписал
header("Content-type: text/xml; charset=windows-1251");

После этого все заработало корректно.
 
Статус
Закрыто для дальнейших ответов.
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!