Проблема в том, что вы читаете значения из поля только тогда, когда страница загружается впервые и она пуста. Чтобы это исправить, переместите эту логику c в обработчик click
.
Следующая проблема заключается в том, что вы должны удалить this
из $('input[type="text"]', this)
. Здесь вам не нужен контекстный селектор, и этот, несмотря ни на что, некорректен.
Также обратите внимание, что допустимая строка запроса начинается с ?
и разделяет каждое значение с &
, поэтому ваша url
требует объединения быть слегка изменены. Кроме того, вы не должны обновлять значение url
при каждом клике. Если вы сделаете это таким образом, ваш запрос AJAX будет работать только один раз.
Наконец, metadata
в вашем ответе - это объект, а не массив. data
- это массив, поэтому вместо него вам нужно l oop. L oop также можно упростить с помощью map()
. Попробуйте это:
$(document).ready(function() {
const url = "https://data.edu/api/v1/metadata";
$('button[type="button"]').on('click', function(e) {
let searchstring = $('input[type="text"]').val();
let requestUrl = url + `?text=${searchstring}&title=${searchstring}`;
$.ajax({
type: 'GET',
url: requestUrl,
success: function(res) {
let html = res.data.map(item => `<div>Title ${item.metadata.title}</div><br />`);
$('#results').html(html);
}
});
});
});