не работает парсинг 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:52. |