@Adel1ne

Как реализовать алгоритм динамического поиска данных (на примере extjs)?

Здравствуйте!

Хочу реализовать динамический поиск данных.
Т.е. когда вводишь в строке поиска текст, после каждого нажатия клавиши создается ajax-запрос, который в свою очередь обращается к БД и вытягивает данные.
Так то алгоритм не сложный, просто вешаешь на event.keyUp или event.keyPress код запроса и все вроде бы нормально.
Проблема наступает, когда начинаешь вводить данные очень быстро. В какой то момент, запрос видимо не успевает прогрузиться и идет сбой.

Делаю запрос в javaScript фреймворке extjs и у меня это выглядит примерно так:
По нажатию на клавишу проверяется, что длина введенной строки больше трех и нажата буква или цифра
if (search_value.length > 3 && event.keyCode > 46 && event.keyCode < 91) {
            store2.proxy.api.read = '/isc/get_store2/?value='+search_value;
            store2.loadPage(1);
}


При аккуратном нажатии все работает хорошо, но если набрать очень быстро, то видимо где-то что-то сбоит и в консоли выдается ошибка Uncaught TypeError: Cannot read property 'internalId' of undefined
Понятно, что это конкретно extjs ошибка, которая говорит о том, что не получается загрузить store2, но суть в том, что похоже просто не успевает отработать предыдущий запрос и на него накладывается новый.

В связи с этим вопрос, как можно заблокировать выполнение запроса к БД, если в данный момент не завершен предыдущий запрос. Ну или в целом какие есть механизмы динамического поиска, которые могут решить такого рода проблему?
  • Вопрос задан
  • 380 просмотров
Решения вопроса 1
yarkov
@yarkov Куратор тега JavaScript
Помог ответ? Отметь решением.
Вам нужна задержка между нажатиями клавиш. Вот тут отличный пример с кодом.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы
24 нояб. 2024, в 01:35
5000 руб./за проект
24 нояб. 2024, в 01:24
500 руб./за проект
24 нояб. 2024, в 00:04
5000 руб./за проект