Задать вопрос
@danilr

Как организовать автозаполнение слов?

Дали задачу - предлагать варианты для автозаполнения при вводе в инпут. Какими способами это сделать? Поиск при нажатии на "лупу" делался в google book api.
5edce03ce4b72320348814.jpeg
Мне что придётся при вводе каждого символа отправлять туда же запрос на получение новых данных по книгам?
  • Вопрос задан
  • 144 просмотра
Подписаться 1 Средний Комментировать
Решения вопроса 2
SeaInside
@SeaInside
15 лет пилю все эти штуки
Да, всё верно. Каждое изменение текстового поля - новый запрос к API.
Единственное что - на изменение повешайте throttle с интервалом в районе 200-500мс, так как есть люди, которые быстро печатают, и им не надо смотреть на промежуточные результаты, да и количество запросов сэкономите.
Ответ написан
@Karpion
Мне что придётся при вводе каждого символа отправлять туда же запрос на получение новых данных по книгам?
Нет, можно посылать запросы реже.

Допустим, мы только что загрузили страницу; в поле ввода пока пусто. Мы заранее (при заполнении БД) составляем дерево запросов (оно по размеру сопоставимо с ключами поиска в БД; ну, можно обрезать). Предполагается, что юзер может ввести первую букву - одну из тех, которые являются первыми буквами ключей поиска. Значит, можно сразу же заранее загрузить варианты подсказок для первой буквы, и далее просто выбрать нужный уже загруженный вариант.

Можно загрузить варианты подсказок для любых первых двух букв. Или трёх. Или сколько угодно. Просто количество вариантов растёт экспоненциально.
Это называется "упреждающее чтение".

Есть вариант - загружать только самые популярные варианты подсказок. А для этого придётся вести статистику.

Короче говоря, ценой уменьшения количества запросов и роста атликабельности - будет рост трафика и усложнение как калинтской, так и серверной части сайта. Решайте сами, нужно но Вам или нет.

По хорошему - смотрите, как это сделано у грандов индустрии - у поисковиков, у крупных магазинов, etc.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
MDiMaI666
@MDiMaI666
Талантливый программист
Да
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы