Получить массив вложенных элементов JSON-файл - PullRequest
0 голосов
/ 05 сентября 2018

У меня есть этот JSON-файл с вложенным массивом> queue_list.

[{
    "id_shop": "2",
    "shop_name": "Brackets",
    "queue_list": [{
        "id_queue_current": "1",
        "queue_name": "Queue 1",
        "queue_current_number": "12"
    }, {
        "id_queue_current": "2",
        "queue_name": "Queue 2",
        "queue_current_number": "23"
    }]
}]

С моим jQuery / ajax я могу правильно читать, id_shop и shop_name, но не могу читать элементы в queue_list. Как я могу получить доступ к этим элементам?

    $.ajax({
      type: "GET",
      url: "shop_list.php",
      dataType: 'html',
      success: function(data) { 
            data = JSON.parse(data); 
            data.forEach(function(dataItem){
            var id_shop = dataItem.id_shop;
            var shop_name = dataItem.shop_name;
            var queue_current_number = dataItem.current_number;
            var queue_name = dataItem.queue_name; //this element
             $("#header h1").html('<div>'+shop_name+'</div>');
                 $("#shop_queue").html('<li data-categoryId ="'+id_shop+'"><a href="#shop_'+id_shop+'">'+queue_name+'</a></li>');
         });
         }
    }); 

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

Ответы [ 3 ]

0 голосов
/ 05 сентября 2018

Попробуйте с приведенным ниже решением,

var test = 
[{
    "id_shop": "2",
    "shop_name": "Brackets",
    "queue_list": [{
        "id_queue_current": "1",
        "queue_name": "Queue 1",
        "queue_current_number": "12"
    }, {
        "id_queue_current": "2",
        "queue_name": "Queue 2",
        "queue_current_number": "23"
    }]
}]

     test.forEach(function(dataItem){
            var id_shop = dataItem.id_shop;
            var shop_name = dataItem.shop_name;
            var queue_data = dataItem.queue_list; 
            queue_data.forEach(function(queueItem){
                var queue_id= queueItem.id_queue_current;
                alert(queue_id);
                var queue_name= queueItem.queue_name;
                alert(queue_name);
                var queue_current_number= queueItem.queue_current_number;
                alert(queue_current_number);
            })
         })
   
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
0 голосов
/ 05 сентября 2018

вы не можете читать и получать доступ к элементам в queue_list, просто вызывая dataItem.current_number или dataItem.queue_name. Вы можете получить доступ к элементам внутри объекта JSON queue_list, вызывая элементы через queue_list, например dataItem.queue_list.current_number и dataItem.queue_list.queue_name.

Надеюсь, что это решило проблему.

0 голосов
/ 05 сентября 2018

Возможно, вам придется сделать что-то подобное в вашем методе успеха

var queue_name;

        var queue_lst = dataItem.queue_list.each(function(item, index){
            queue_name=JSON.parse(item).queue_name;
        }); 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...