Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 25.08.2010, 09:37
Интересующийся
Отправить личное сообщение для Enxiro Посмотреть профиль Найти все сообщения от Enxiro
 
Регистрация: 25.08.2010
Сообщений: 22

не работает парсинг XML в IE
Здравствуйте.
Имею следующую функицю
function getCategories(xml){
	var success = 0;

	jQuery(xml).find('cat').each( function(){
		if(success == 0)
		{
			jQuery('#categories').append('<option value=null>- Выберите -</option>');				
		}
        jQuery('#categories').append('<option value=' + jQuery(this).attr('id') + '>'+jQuery(this).text()+'</option>');
		success = 1;
	});
	return success;
}

То бишь на вход приходит XML, в нём находим <cat>...</cat> и добавляем это в select.
В Mozilla, Chrome, Opera работает замечательно. В горячо любимом мной IE 8 не работает..
не срабатывает each().

Данные в переменной xml следующие:
<?xml version="1.0" encoding="windows-1251"?><categories><cat id='34'>Жилая недвижимость</cat><cat id='36'>Коммерческая недвижимость</cat></categories>

В чем может быть причина подскажите пожалуйста?
Может как-то ещё можно по быстрому распарсить?
Ответить с цитированием
  #2 (permalink)  
Старый 25.08.2010, 09:41
Отправить личное сообщение для Octane Посмотреть профиль Найти все сообщения от Octane  
Регистрация: 10.07.2008
Сообщений: 3,873

Используйте JSON
Ответить с цитированием
  #3 (permalink)  
Старый 25.08.2010, 10:23
Интересующийся
Отправить личное сообщение для Enxiro Посмотреть профиль Найти все сообщения от Enxiro
 
Регистрация: 25.08.2010
Сообщений: 22

а есть простой способ преобразовать JSON строку полученную от сервера в массив?
порылся в инете и пока что только через регулярные выражения нашёл решение. но что то оно не очень нравится. я через регулярные мог и XML тогда распарсить наверное..
Ответить с цитированием
  #4 (permalink)  
Старый 25.08.2010, 10:34
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

Enxiro,
а вы знаете, что такое JSON? Судя по вопросам не знаете.
Ответить с цитированием
  #5 (permalink)  
Старый 25.08.2010, 10:35
Отправить личное сообщение для Octane Посмотреть профиль Найти все сообщения от Octane  
Регистрация: 10.07.2008
Сообщений: 3,873

Конечно есть. В современных браузерах есть встроенный объект JSON, метод parse которого служит для преобразования JSON-строки в JavaScript-объект. Для остальных браузеров этот объект можно добавить http://www.json.org/js.html

Ваши данные в JSON-строке выглядели бы так:
{"34": "Жилая недвижимость", "36": "Коммерческая недвижимость"}


Преобразуем в JavaScript-объект:
var data = JSON.parse('{"34": "Жилая недвижимость", "36": "Коммерческая недвижимость"}');

alert(data[36]);


В jQuery есть методы для работы с JSON.

Разбор xml на клиенте сейчас используют разве что в каких нибудь шаблонизаторах.

Последний раз редактировалось Octane, 25.08.2010 в 10:40.
Ответить с цитированием
  #6 (permalink)  
Старый 25.08.2010, 11:28
Интересующийся
Отправить личное сообщение для Enxiro Посмотреть профиль Найти все сообщения от Enxiro
 
Регистрация: 25.08.2010
Сообщений: 22

Сообщение от Kolyaj Посмотреть сообщение
Enxiro,
а вы знаете, что такое JSON? Судя по вопросам не знаете.
Хотел было уже материться, мол знаю, JSON - это строка сформированная определённым образом..
Но как оказалось действительно не знаю.
И решение оказалось достаточно простое.
Пишу для остальных.

Получив от сервера объект JSON скажем в переменную obj можем добираться до элементов легко: obj.element_name

Вот скажем у меня сервер формировал строку
echo json_encode(array(0=>array('orig' => 'orig1', 'name' => 'name1'), 1=>array('orig' => 'orig2', 'name' => 'name2')));

В JavaScript пройтись по этим элементам можно следующим образом:
jQuery.getJSON('index.php?option=com_ajaxsearch&amp;no_html=1', {v: val}, function(obj)
{
	for(var i=0; i<obj.length; i++)
		alert(obj[i].orig);
});


Вот.
А вариант с var data = JSON.parse почему то не работал.
И так ещё пробовал var response = eval(" (" + datac + ") ");
тоже не работал. Выдавал "missing ] after element list"

Ладно. Спасибо всем за советы.
Ответить с цитированием
  #7 (permalink)  
Старый 25.08.2010, 12:26
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

Сообщение от Enxiro
JSON - это строка сформированная определённым образом..
И ведь не поспоришь
Правда HTML, CSS, JavaScript, C++, C#, Java, Erlang и многое другое тоже являются строками, сформированными определённым образом.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Скрипт не работает в FF и опера, но работает в IE(в чем дело???) Cepera Firefox/Mozilla 1 24.08.2012 16:46
Как удалить из памяти весь XML документ? EisBerg Events/DOM/Window 1 03.04.2010 14:45
Динамическая HTML форма (FireFox - работает, IE - не работает) dm1tr1y Общие вопросы Javascript 10 11.12.2009 15:59
Парсинг XML dabutch Общие вопросы Javascript 17 09.04.2009 09:48
Скрипт меню-гармошки работает выборочно Extern Элементы интерфейса 2 23.02.2009 15:32