Я строю простой поиск для своего приложения, и мне интересно, есть ли способ динамически устанавливать значения форм на основе JSON
Я отправляю запрос в API, который возвращает немного JSON вместе с результатами, указывающими, какими должны быть отфильтрованные раскрывающиеся списки. Так, например, если я ищу автомобили и марку, я выбираю «Форд», вот как будет выглядеть типичный ответ, чтобы указать, как должны выглядеть другие выпадающие поля:
{
"make": [
"Ford"
],
"model": [
"ECOSPORT",
"Fiesta",
"Focus",
"Transit"
],
"colour": [
"Blue",
"White",
"Red",
"Black"
],
"fuel": [
"Petrol",
"Diesel"
],
"transmission": [
"Manual"
],
"bodystyle": [
"Suv",
"Hatchback",
"Bus"
],
"engine": [
998,
1498,
1242,
1499,
2198
],
"door": [
5,
3
],
"interior": [
"Part leather",
"Not set",
"Cloth"
],
"age": [
"2016",
"2017",
"2011"
]
}
Также возвращается исходный запрос, который выглядит следующим образом (он может иметь несколько значений, если для исходного запроса было выбрано несколько параметров, например, марка и модель)
[
{
"name": "make",
"value": "Ford"
}
]
Что я ищу do это l oop через первый JSON, который содержит раскрывающиеся фильтры, и l oop через каждый элемент формы (по имени) и обновите значение (за исключением одного в исходном запросе, поэтому в этом случае make )
Входные имена элементов формы соответствуют именам, возвращаемым запросом:
<select name="make">
<option value="">Make (All)</option>
</select>
</div>
<div class="col span_2_of_12">
<select name="model">
</select>
</div>
<select name="transmission"></select>
В этом примере я хотел бы, чтобы код добавлял опции для выбора для 'model' и ' передача, пока не обновляются значения для make, как это было в исходном запросе
Я пытался сделать это как al oop, но, похоже, ничего не делает
var dropdown = data.dropdown;
$.each(dropdown, function (key, value) {
var item = $("input[name=" + key + "]")
item.empty()
$.each(value, function (x, y) {
item.append(new Option(y + ' (All)', ""));
item.append("<option value=" + y + ">" + y + "</option>");
});
});