Доступ JSON к значениям из переменных Javascript осуществлялся из меню выбора

#javascript #jquery #json

#javascript #jquery #json

Вопрос:

У меня есть данные JSON, значения которых должны быть получены с использованием переменных Javascript.

Вот HTML

 <body>

<form action="#" action="get">

    <select name="college" id="college" onchange="selection('college', 'course')">
        <option value="base">base</option>
        <option value="amity">Amity University</option>
        <option value="indraprastha">Indraprasth University</option>
    </select>

    <br>
    <select name="course" id="course" >
        <option value="base">Base</option>
    </select>

    <br>
    <select name="stream" id="stream"></select>

    <br>
    <select name="sem" id="sem"></select>

    <br>
    <select name="subject" id="subject"></select>

</form>
</body>
 

Вот JSON

 {
"amity": [
    {
        "name": "B.Tech,btech"
    },
    {
        "name": "M.tech,mtech"
    }
],

"indraprastha": [
    {
        "name": "B.Tech,btech"
    },
    {
        "name": "Mtech,mtech"
    }
]
}
 

и вот JS

 function selection(s1, s2) {
var first = document.getElementById(s1),
    second = document.getElementById(s2);

$.getJSON("json/list.json", function(data) {        
    var college = $('#college').val();

    $.each(data[college][0], function(key, value) {
        alert(value);

    });

  });
}
 

Теперь проблема в том, что, используя первый выпадающий список для колледжа, я могу получить значение колледжа с помощью .val() функции. Но для второго выпадающего списка, который является динамическим, мне нужны значения внутри массива данных колледжа в формате JSON, но по какой-то причине я не могу получить к нему доступ, если не добавлю индекс массива [0] , причину которого я знаю, поскольку это массив. Но значение должно быть получено из раскрывающегося списка course, который в настоящее время пуст.

Я хочу, чтобы все значения внутри массива данных дружелюбия переходили во второй раскрывающийся список. Затем из этого я могу получить к нему доступ следующим образом, data[college][course]

Существуют ли какие-либо решения для доступа к полному amity массиву и получения всех его объектов. Кроме того, можете ли вы предложить статью о создании динамического выпадающего меню не менее 3-4 уровней.

Заранее спасибо.

Комментарии:

1. Если вам нужен массив, вы не хотите [0] . Вызов .each будет выполнять итерацию по массиву, поэтому key фактически будет индексом, а value будет соответствующим значением. Поскольку у вас есть массив объектов, value будет ссылка на объект, поэтому вам нужно будет ссылаться на свойство name: value.name . Однако, если вы хотите заполнить элементы в select, я бы посоветовал вам разделить значение и отображаемый текст, а не объединять их в то, что выглядит как строка, разделенная запятыми (т. Е. Немного Изменить структуру JSON).

2. @AnthonyGrist Огромное спасибо, чувак… Я потратил около 2 часов, ломая голову и выясняя, что не так с моим кодом.