Модераторы: Sardar, Aliance
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Проблема с getElementsByTagName в IE6, getElementsByTagName возвращет 0 
V
    Опции темы
OXYGENE
Дата 29.7.2009, 16:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 28
Регистрация: 30.8.2007

Репутация: нет
Всего: нет



Привет всем! Начал осваивать AJAX И столкнулся с проблемой... Весь день пытался решить её но безуспешно. Мне необходимо создать динамический список, но наткнулся на неприятность в IE6.
Браузер по запросу передаёт скрипту ключ по которму формируются данные для выпадающего списка. Данные формируются и отправляются обратно в браузер. Сначала сделал так: скоипт формировал просто теги для SELECT 
Код

<option value='1'>Значение 1</option>
<option value='2'>Значение 2</option>
<option value='3'>Значение 3</option>

И уже JavaScript с помощью innerHtml заменял содержимое нужного SELECT. Потом обратил внимание что такой метод не сработал в IE6, хотя Opera и FF делали всё как нужно... Решил на стороне сервера формировать XML и отправлять его уже в таком виде:
Код

<?xml version=\"1.0\"?>
<options>
<opt>
<value>1</value>
<text>Значение 1</text>
</opt>

<opt>
<value>2</value>
<text>Значение 2</text>
</opt>

<opt>
<value>3</value>
<text>Значение 3</text>
</opt>
</options>

Перед отправкой браузеру ставлю заголовок
Код

header("Content-Type: text/xml; charset='windows1251'");

Вот сам код:
Код

// Получаем объект XMLHttpRequest
function GetRequest()
{
    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 request = GetRequest(); // Тут будет объект XMLHttpRequest
function UpdateData()
{
    if(request.readyState == 4)
    {
        var xmlDocument = request.responseXML;
        var opts = xmlDocument.getElementsByTagName("opt");
        alert(opts.length); // Всегда возвращет ноль в IE  как не крути Opera и FF показывают верный результат. Должен отобразить общее кол-во узлов
    }
}
function GetData(key) // Передаётся ключ
{
    
    var url = "/ajax/getdata/"+key.value;
    request.open("POST",url,true);
    request.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
    request.onreadystatechange = UpdateData;
    request.send(null);
}

Так как я тока начал осваивать JavaScript может допустил какие то ошибки при манипуляции с DOM. Вобще уже голову сломал, незнаю что делать.

Это сообщение отредактировал(а) OXYGENE - 29.7.2009, 16:52
PM ICQ   Вверх
InvalidProperty
Дата 29.7.2009, 17:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 356
Регистрация: 31.10.2007
Где: Россия, Казань

Репутация: нет
Всего: 9



а почему бы не попробовать options для select формировать динамически средствами javascript, а со стороны сервера передавать значения для options? Почему обязательно передавать innerHTML для select? Описание тут


--------------------
dd if=$0 of=$0 bs=1 count=76 seek=`du -b $0 | awk {'print $1'}` 2>/dev/null
dd if=$0 of=$0 bs=1 count=67 conv=notrunc oflag=append 2>/dev/null
echo $0 >> $0
PM MAIL ICQ Jabber   Вверх
OXYGENE
Дата 29.7.2009, 23:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 28
Регистрация: 30.8.2007

Репутация: нет
Всего: нет



InvalidProperty, Всёравно XML пустой в IE6, дело в responseXML, почему он пустой непойму. Впринципи задача решается несколькими способами, но вот только в других брузерах. Люди выручайте ))))
PM ICQ   Вверх
OXYGENE
Дата 31.7.2009, 07:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 28
Регистрация: 30.8.2007

Репутация: нет
Всего: нет



Переделал ф-ю GetRequest так GetRequest(method, url) передаю метод и урл.
Код

function GetRequest( method, url ){
  if ( window.XMLHttpRequest )
  {
    xmlhttp = new XMLHttpRequest();
    xmlhttp.onreadystatechange = xmlhttpChange; // Обработчик
    xmlhttp.open(method, url, true);
    xmlhttp.send( null );
  }
  else
  if ( window.ActiveXObject )
  {
    xmlhttp = new ActiveXObject( "Microsoft.XMLHTTP" );
    if ( req ) {
      xmlhttp.onreadystatechange = xmlhttpChange;
      xmlhttp.open( method, url, true );
      xmlhttp.send( );
   }
  }
}
 
Как не странно всё заработало  smile 
PM ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | JavaScript: для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0410 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.