2016-11-26 2 views
2

Я пытаюсь выполнить вызов api, чтобы получить список подкатегорий. мой JSON выглядит следующим образомОт Json Получить ключевое слово Javascript

{ 
     "description": "Flower", 
     "name": "Flower", 
     "parent_id": "1" 
    }, 
    { 
     "description": "Moon", 
     "name": "Moon", 
     "parent_id": "1" 
    } 
] 


Это то, что я attepted до сих пор.

<script type="text/javascript"> 
     $('button').click(function() { 

    $.ajax({ 
     url: "/api/subcategories?sstr=ball", 
     dataType: 'json', 
     type: "GET" 
    }) 
    .done(function(data) { 
     $('.results').append('<ul class="list"></ul>'); 
     $.each(data, function(key, value) { 
      console.log(data) 
      $('.list').append('<li>' + key + ': ' + value + '</li>'); 
     }); 
    }) 
    .fail(function(event) { 
     alert(event.status); 
    }); 
}); 
    </script> 

В результате я получаю 0: [объект Object] 1: [объект Object] 2: [объект Object]
то, что я хотел бы список имен.

+0

'.parseJSON (ваш json)' –

+2

'$ ('. List'). Append ('

  • ' + key + ':' + value.description + ',' + value.name + ',' + значение. parent_id + '
  • '); ' ');' –

    +0

    @ImmortalDude: это уже объект ..... 'dataType:' json ',' –

    ответ

    3

    Где value - элемент массива, который является объектом, вместо этого получает свое свойство name.

    $('.list').append('<li>' + key + ': ' + value.name + '</li>'); 
    

    Поскольку это массив вы можете использовать JavaScript Array#forEach метод также.

    data.forEach(function(value, key) { 
        $('.list').append('<li>' + key + ': ' + value.name + '</li>'); 
    }); 
    

    Или вы можете уменьшить его до одного оператора дописывания путем генерации HTML-строку, используя Array#map и Array#join методы.

    $('.results').append(
        '<ul class="list">' + 
        data.map(function(value, key) { 
        return '<li>' + key + ': ' + value.name + '</li>'); 
        }).join('') + 
        '</ul>' 
    ); 
    
    +1

    Большое спасибо –

    1

    Прежде всего вам нужно разобрать свою json-строку, чтобы преобразовать ее в массив javascript.

    Итак, сделайте это -> var json_data = jQuery.parseJSON (данные);

    Теперь

    var html = ""; 
    
    html += '<ul>'; 
    
    $.each(json_data, function(key, value) { 
    
        html += '<li>'+key+':'+value['name']+'</li>';  
    
    }); 
    
    html += '</ul>'; 
    
    $('.list').html(html); 
    

    Я думаю, что будет делать трюк.

    Смежные вопросы