Как считать json в select?

210
30 ноября 2018, 05:00

Есть json файлы, сначала считываю их php файлом, потом скриптом пытаюсь перенести эти данные в select список, но где-то ошибка. Скрипт писал не сам, а пытаюсь переделать тот что работал с БД.

Пример работающего скрипта:

$(document).ready(function () {
        var url = 'get_regions.php';
        $.get(
            url,
            "country_id=" + "3159",
            function (result) {
                if (result.type == 'error') {
                    alert('error');
                    return(false);
                }
                else {
                    var options = ''; 
                    $(result.regions).each(function() {
                        options += '<option value="' + $(this).attr('region_id') + '">' + $(this).attr('name') + '</option>';
                    });
                    $('#region_id').html('<option value="0">- выберите регион -</option>'+options);
                    $('#region_id').attr('disabled', false);
                    $('#city_id').html('<option>- выберите город -</option>');
                    $('#city_id').attr('disabled', true);   
                }
            },
            "json"
    );

пример структуры с которой работает:

Array
(
    [regions] => Array
        (
            [0] => Array
                (
                    [name] => Москва и Московская обл.
                    [region_id] => 4312
                )
            [1] => Array
                (
                    [name] => Санкт-Петербург и область
                    [region_id] => 4925
                )

Мне же нужно прочитать вот такую структуру

Array
(
    [0] => Array
        (
            [0] => 01
            [1] => Адыгея
            [2] => 106
            [3] => 385000
        )
    [1] => Array
        (
            [0] => 02
            [1] => Башкортостан
            [2] => 106
            [3] => 452000
        )

Пробовал сменить атрибуты, но толку не принесло

options += '<option value="' + $(this).attr('0') + '">' + $(this).attr('1') + '</option>';

насколько понимаю, загвоздка в этой строке $(result.regions) но как считать массив если у него нет ключа, точнее ключ 0 если правильно понял

Answer 1

Если я Вас правильно понял, можно так:

let json = [{ 
  'region_id':'123', 
  'name':'Город' 
}, 
 { 
  'region_id':'321', 
  'name':'Город2' 
}, 
{ 
  'region_id':'555', 
  'name':'Город3' 
}]; 
 
json.forEach((item)=>{ 
  $('#sel').append('<option value="'+item.region_id +'">'+item.name +'</option>'); 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
<select name="" id="sel"></select>

READ ALSO
Сортировка datatable в формате min/max

Сортировка datatable в формате min/max

Всем привет, у меня затык с одним делом Мне с бека приходит информация о цене в формате min/max И как бы надо сделать сортировку по этому полю,...

159
Не работает скрипт в модальном окне

Не работает скрипт в модальном окне

Мне нужно сделать анимацию в модальном окне, которое появляется при клике на кнопкуВ приведенном ниже коде, есть пример рабочей анимации

174
не работает плагин owl-carousel

не работает плагин owl-carousel

Всем здравствуйте! Нужна помощьЕсть модальное окно (#pop-up), которое появляется при клике на кнопку

164