Как обновить datalist option с помощью ajax
С помощью jQuery пытаюсь обновить option в datalist
response = {'is_taken': [{'id': 3, 'name': 'Casio'}, {'id': 5, 'name': 'Casio Edifice'}, {'id': 6, 'name': 'Casio G-Shock'}], 'is_exist': True}
как перебрать в list в is_taken, чтобы обновить данные в datalist?
это jsonOptions.forEach(function(response.is_taken) выдает ошибку Uncaught SyntaxError: Unexpected token '.'
html
$('#ajax_input').keyup(function () {
// create an AJAX call
$.ajax({
data: $(this).serialize(), // get the form data
url: "{% url 'ajax_request' %}?model=device",
// on success
success: function (response) {
if (response.is_exist == true) {
console.log('is_exist = true')
$("#ajax-one_form-device").text(response.is_taken.name);
vardataList = document.getElementById('{{ widget.name }}');
var input = document.getElementById('ajax_input_{{ widget.name }}');
var request = new XMLHttpRequest();
// Обрабатываем изменение состояния для запроса.
// Парсируем JSON
// Перебираем через цикл массив JSON.
jsonOptions.forEach(function(response.is_taken) {
// Создаем новый элемент <option>.
var option = document.createElement('option');
// Устанавливаем значение, используя элементы массива JSON.
option.value = response.is_taken['id'];
option.label = response.is_taken['name'];
// Добавляем элемент <option> к <datalist>.
dataList.appendChild(option);
});
// Обновляем текст заполнителя.
input.placeholder = "e.g. datalist";
// Обновляем текст заполнителя.
input.placeholder = "Loading options...";
// Настраиваем и выполняем запрос.
request.open('GET', 'html-elements.json', true);
request.send();
console.log(vardataList)
console.log(input)
}
else {
$("#ajax-{{ widget.name }}").text('Нет в базе');
}
},
// on error
error: function (response) {
// alert the error if any error occured
console.log(response.responseJSON.errors)
}
});
return false;
});
Ответы (1 шт):
Неизвестно что за переменная jsonOptions, возможно опечатка.
Ошибка заключалась в том, что вы указывали в параметре функции как я понял свойство объекта которое я так понимаю вы хотели передать в функцию. Но на самом деле мы создаем фкнкцию и указываем "внутреннее" имя переменной. Не знаю как более правильно обьяснить. В данной переменной будет элемент массива на итерации "цикла", назвать эту перепенную мы можем как угодно, она служит для работы внутри "цикла". По этому правильная строка будет:
request.is_taken.forEach(function(response)