Как вывести несколько массивов из JSON в JavaScript?

211
27 апреля 2018, 13:46

Если выгонять из базы по отдельности ALLROOM и USERS то всё работает json[j].room или json[j].f но вместе одним запросом не получается.
Как правильно вывести из одного кода только ALLROOM и отдельно USERS ?

Вывод по отдельности в PHP:

$pack[] = array('room'=>$row->room,'room2'=>$row->room2 );
echo json_encode($pack);

JSON отдельно ALLROOM:

[{"allroom":[{"room":"1"},{"room2":"2"}]

JSON отдельно USERS:

[{"users":[{"f":"admin1","l":"admin1"},{"f":"admin2","l":"admin2"}]}]

В PHP я их соединил так:

$pack[] = array('allroom'=>$room,'users'=>$users );  
echo json_encode($pack);

JSON сразу два ALLROOM и USERS:

[{"allroom":[{"room":"1"},{"room2":"2"}],"users":[{"f":"admin1","l":"admin1"},{"f":"admin2","l":"admin2"}]}]

Код в JS AJAX

 $.ajax({
       url: '/ajax/stats', 
        type: 'POST',
        data:({room: 1}), 
        dataType: 'json',
        cache: false,
        success: function(json) {
            var j = 0;
            while(j <= json.length-1){ 
            $('#stat_users').html(json);
            j++;
            }
        }
Answer 1

Попробуйте так

$.ajax({
   url: '/ajax/stats', 
    type: 'POST',
    data:({room: 1}), 
    dataType: 'json',
    cache: false,
    success: function(json) {
        for (var i in json.users){
           $('#stat_users').append(json.users[i]);
        }
        console.log(json.allroom); // повторить с allroom при надобности
    }
Answer 2

$.ajax({ 
  url: '/ajax/stats',  
  type: 'POST', 
  data:({room: 1}),  
  dataType: 'json', 
  cache: false, 
  success: function(json) { 
    for (var i = 0; i < json[0].allroom.length; i++) { 
      console.log(json[0].allroom[i].name); 
      console.log(json[0].allroom[i].caption); 
    }     
    for (var i = 0; i < json[0].users.length; i++) { 
      for (var j = 0; j < json[0].users[i].length; j++) { 
        console.log(json[0].users[i][j].type) 
        console.log(json[0].users[i][j].name) 
      } 
    }        
  } 
});
// взял исходный массив и попытался изменить его по минимум, его нужно привести в такой вот вид: 
$pack[] = array( 
    'allroom' => array( 
        array( 
            'name' => 'room1', 
            'caption' => '1' 
        ), 
        array( 
            'name' => 'room2', 
            'caption' => '2' 
        ) 
    ), 
    'users' => array( 
        array( 
            array( 
              'type' => 'f', 
              'name' => 'admin1' 
            ), 
            array( 
              'type' => 'l', 
              'name' => 'admin1' 
            ) 
        ), 
        array( 
            array( 
              'type' => 'f', 
              'name' => 'admin2' 
            ), 
            array( 
              'type' => 'l', 
              'name' => 'admin2' 
            ) 
        ), 
    ) 
); 
 
echo json_encode($pack);

READ ALSO
Как правильно подключить scss в webpack?

Как правильно подключить scss в webpack?

Появилась потребность поставить Sass в проект на React и вот проблема: когда стартует проект выдаёт ошибку:

156
jquery datePicker получить дату и не выводить в инпут

jquery datePicker получить дату и не выводить в инпут

как получить значение datePicker, перехватить его, сделать изменения, какие то и потом самому поместить в инпутэто мой код, так он вставляет в компонент...

136
SVG animation не срабатывает в FF

SVG animation не срабатывает в FF

Коллеги есть такой кодКнопка для плеера play-pause

194
Как применять функцию только к текущему элементу?

Как применять функцию только к текущему элементу?

Есть скрытый блок у 10 товаров (лежат в li)

117