добавление данных JSON к различным элементам

0

Мне нужно использовать оператор switch для создания разметки на основе полученного фида. Хотя я могу получить данные, мне интересно, правильно ли использовать два $(data.value.items).each(function (index, item) { чтобы добавить заголовки каналов в поле выбора, а также неупорядочить Любой лучший способ сделать то же самое?

$.ajax({
    url: "http://www.zzz.com/text.json",
    dataType: 'json',
    success: function (data) {
      item_html = parseData(feedformat, data)
      var nextarea = $this.next('.area');
      nextarea.append(item_html).slideDown();
    },
    error: function () { 
      area.html('fail'); }
});

function parseData(type, data) {
    var item_html ='';
    switch(type) {
        case 'thisfeed':
            item_html +='<select>';

            $(data.value.items).each(function (index, item) { 
                item_html += '<option>'+item.title+'</option>'; 
            });

            item_html += '</select>';
            item_html += '<ul>';

            $(data.value.items).each(function (index, item) {
                item_html += '<li>'+item.title+'</li>
            });

            item_html += '</ul>';
            break;
       }
     return item_html;   
    }
  • 0
    на первый взгляд, пожалуйста, заключите ваш url Ajax в quotes ''
  • 0
    три ура за дыры XSS! более серьезно, подумайте об использовании минимального языка шаблонов (например, усов) для создания разметки - если item.title генерируется пользователем, вы действительно действительно хотите избежать этого должным образом.
Показать ещё 5 комментариев
Теги:

1 ответ

2
Лучший ответ

Вы могли бы просто сделать оба в одном цикле, что-то вроде этого

$.ajax({
    url      : 'http://www.zzz.com/text.json',
    dataType : 'json',
    success  : function (data) {
        var item_html = parseData(feedformat, data)
        var nextarea  = $this.next('.area');
        nextarea.append(item_html).slideDown();
    },
    error: function () { 
        area.html('fail'); 
    }
});

function parseData(type, data) {
    switch(type) {
        case 'thisfeed':
            var select = $('<select />'),
                ul     = $('<ul />');

            $(data.value.items).each(function (index, item) { 
                var option = $('<option />', {text : item.title}),
                    li     = $('<li />', {text : '.......'});

                select.append(option);
                ul.append(li);
            });
       }
    }
    return select.add(ul);
}

Ещё вопросы

Сообщество Overcoder
Наверх
Меню