не работает парсинг 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> В чем может быть причина подскажите пожалуйста? Может как-то ещё можно по быстрому распарсить? |
Используйте JSON
|
а есть простой способ преобразовать JSON строку полученную от сервера в массив?
порылся в инете и пока что только через регулярные выражения нашёл решение. но что то оно не очень нравится. я через регулярные мог и XML тогда распарсить наверное.. |
Enxiro,
а вы знаете, что такое JSON? Судя по вопросам не знаете. |
Конечно есть. В современных браузерах есть встроенный объект 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 на клиенте сейчас используют разве что в каких нибудь шаблонизаторах. |
Цитата:
Но как оказалось действительно не знаю. И решение оказалось достаточно простое. Пишу для остальных. Получив от сервера объект 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&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" Ладно. Спасибо всем за советы. |
Цитата:
Правда HTML, CSS, JavaScript, C++, C#, Java, Erlang и многое другое тоже являются строками, сформированными определённым образом. |
Часовой пояс GMT +3, время: 22:18. |