#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 часов, ломая голову и выясняя, что не так с моим кодом.