new XMLHttpRequest(); req.onreadystatechange = function() { if (req.readyState === 4) { // only if req is "loaded" if (req.status === 200) { // only if "OK" callback(undefined, req.responseText); } else { // error callback(new Error(req.status)); } } }; // can't use GET method here as it would quickly // exceede max length limitation req.open("POST", url, true); //Send the proper header information along with the request req.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); req.send(); } [...] </script>
AJAX • Поле ввода — строка фильтра • Под полем ввода таблица — содержимое таблицы из базы данных, отфильтрованной по введенному в поле ввода значению (показаны только те строки, которые содержат введенное значение в качестве подстроки) • При вводе строки посимвольно или при нажатии специальной кнопки отправлять на сервер запрос с введенным значением фильтра • На сервере сформировать ответ, запросив значения из базы SQL • Получить строки отфильтрованной таблицы, обновить отображение таблицы без перезагрузки страницы
(и HCI вообще) • Библиотеки AJAX (jQuery) • Фреймворк React.js • Библиотеки шаблонов для формирования веб-страниц на сервере (со смешением HTML и кода, аналоги: php, jsp; без смешения кода) • Одностраничные веб-приложения (статический HTML, контент загружается динамически с JavaScript)