Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: AJAX - заполнение select - неправильно работает в Mozilla 5.0

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
С.Тарасов
Отправлено: 10 Июня, 2009 - 12:22:20
Post Id


Новичок


Покинул форум
Сообщений всего: 29
Дата рег-ции: Февр. 2009  


Помог: 0 раз(а)




В чём может быть причина неправильной работы AJAX при заполнении select в Mozilla 5.0?
Заполняется лишь часть (примерно 150 option), а затем список может быть прерван на середине текста. В других бр.- Опера 9.64, 10.0; Hrome 2.0.163.0; IE 6.0 - работает всё правильно.

Информация по запросу AJAX передаётся с сервера в XML формате.
Если для ответа нужно посмотреть коды могу выложить.
 
 Top
Champion Супермодератор
Отправлено: 10 Июня, 2009 - 12:25:13
Post Id



Активный участник


Покинул форум
Сообщений всего: 4350
Дата рег-ции: Авг. 2008  
Откуда: Москва


Помог: 57 раз(а)




http://phpfaq.ru/debug.
Убедись, что вообще php отдает данные нормально сначала.
 
 Top
С.Тарасов
Отправлено: 10 Июня, 2009 - 12:57:32
Post Id


Новичок


Покинул форум
Сообщений всего: 29
Дата рег-ции: Февр. 2009  


Помог: 0 раз(а)




Что значит нормально, если в других работает. Firebug ошибки не выдаёт.

XML приходит следующего вида:
CODE (text):
скопировать код в буфер обмена
  1. <?xml version='1.0' encoding='Windows-1251'?><response><stotkyda>y1149;  1 Рабфаковский пер.;, ......... </stotkyda><obotkyda></obotkyda></response>
 
 Top
Champion Супермодератор
Отправлено: 10 Июня, 2009 - 13:25:31
Post Id



Активный участник


Покинул форум
Сообщений всего: 4350
Дата рег-ции: Авг. 2008  
Откуда: Москва


Помог: 57 раз(а)




С.Тарасов пишет:
XML приходит следующего вида
Ок, будем считать, это ты проверил.
Пришла и как ты ее обрабатываешь?
 
 Top
С.Тарасов
Отправлено: 10 Июня, 2009 - 13:39:46
Post Id


Новичок


Покинул форум
Сообщений всего: 29
Дата рег-ции: Февр. 2009  


Помог: 0 раз(а)




Данные полученые с сервера - XML_data
CODE (text):
скопировать код в буфер обмена
  1.         //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  2.         ///////   добавление одной группы записей в select
  3.         //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  4. function opt(XML_data, ob_st, name_obst, name_id_obst, u, otk_kyd, ok_vibor){
  5.  
  6.  try{
  7.      // в массиве arr - строки полученной таблицы
  8.      var arr = XML_data.getElementsByTagName(ob_st)[0].firstChild.data.split(',');
  9.                        
  10.     // добавляем группу - обьекты
  11.    var new_optgroup = document.createElement("optgroup");
  12.    new_optgroup.setAttribute("label", name_obst);
  13.    new_optgroup.setAttribute("id", name_id_obst);
  14.    otk_kyd.appendChild(new_optgroup);
  15.    var last_added_optgroup = document.getElementById(name_id_obst)
  16.                        
  17.     // для каждой строки
  18.    for(var i in arr){
  19.  
  20.       // в массиве val - поля полученной таблицы
  21.      var val = arr[i].split(';');
  22.      if (val[0] && val[1]){
  23.         var new_sub_option = document.createElement("option");
  24.         new_sub_option.setAttribute("id", val[0]+u);
  25.         new_sub_option.setAttribute("value", val[0]);
  26.         if (val[0] && ok_vibor && val[0] == ok_vibor){ new_sub_option.setAttribute("selected", true);}
  27.         last_added_optgroup.appendChild(new_sub_option);
  28.  
  29.         var text = document.createTextNode(val[1]);
  30.         document.getElementById(val[0]+u).appendChild(text);
  31.    }
  32.  }
  33. }catch (e){}
  34. }
  35.  
 
 Top
Champion Супермодератор
Отправлено: 10 Июня, 2009 - 13:57:35
Post Id



Активный участник


Покинул форум
Сообщений всего: 4350
Дата рег-ции: Авг. 2008  
Откуда: Москва


Помог: 57 раз(а)




Не вижу я тут ничего страшного... Отладка тебе в руки.
 
 Top
С.Тарасов
Отправлено: 10 Июня, 2009 - 14:22:45
Post Id


Новичок


Покинул форум
Сообщений всего: 29
Дата рег-ции: Февр. 2009  


Помог: 0 раз(а)




А может быть такое, что имеется, например, в Javascript или в самой Mozile какое-то ограничение на кол-во динамически создаваемых option? Самое неприятное для меня, что программа работает, но в каком-то промежуточном варианте между: работает и не работает.
 
 Top
Stierus Супермодератор
Отправлено: 10 Июня, 2009 - 14:31:00
Post Id



Рекордсмен по количеству сообщений за 7 дней


Покинул форум
Сообщений всего: 2132
Дата рег-ции: Дек. 2008  
Откуда: Москваль


Помог: 52 раз(а)




первое, что я проверил бы - это целиком ли подгружается xml ( выводить только последние записи, например, пропуская первые 100 option - способов проверить достаточно). Если проблема именно в том, что файл не подгружается - стоит попробовать изменить логику приложения, разбив на несколько файлов или там вкладки делать (выпадающее меню из 150 элементов - это, как минимум, не удобно). Если же файл подгружается целиком - то уже смотрел бы, яваскрипт по каким-то причинам стопорится на середине (если да - тут либо с памятью проблемы, либо доходит до какого-то элемента, выбивающегося из общих правил (ну там название недопустимое, содержит внутри себя <> или ещё что-то)) или что вообще происходит.

Вобщем тут исключительно паяльник в руки и шаг за шагом следить, все ли идёт по плану :

получить полностью файл -> пройти по всему файлу подряд, анализируя содержимое -> внести изменения в DOM

ps
Не слышал про ограничение на количество элементов - сильно сомневаюсь, что такое есть.

(Отредактировано автором: 10 Июня, 2009 - 14:32:32)

 
My status
 Top
С.Тарасов
Отправлено: 10 Июня, 2009 - 15:29:19
Post Id


Новичок


Покинул форум
Сообщений всего: 29
Дата рег-ции: Февр. 2009  


Помог: 0 раз(а)




Спасибо за вариант - начать не с 0. Попробовал
CODE (text):
скопировать код в буфер обмена
  1. for(var i=130; i<arr.length; i++){...


В результате тормозит на томже названии, что и раньше, т.е. очевидно что проблема не с памятью в смысле ограничений.
Не хочет двигаться дальше
Цитата:
ул. Бахрушина
, хотя ничем эта запись в XML документе не отличается:
CODE (text):
скопировать код в буфер обмена
  1. .....Бауманская ул.;,y164;Бахрушина ул.;,y165;Башиловская ул.;,......


Если начинать за этой записью (скажем с i=200) , то вообще не вносит ни одной записи. Опять же только в mozile.

Засада. Растерялся

(Отредактировано автором: 10 Июня, 2009 - 16:45:25)

 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« JavaScript & VBScript »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB