0
Answered

Не вызывается метод onSuggestionsFetch

Anonymous 8 months ago updated by Антон 8 months ago 14

Здравствуйте, перестал вызываться метод onSuggestionsFetch перед появлением подсказки. До этого работало без нареканий. Реализация как тут, только для города. https://codepen.io/dadata/pen/dMXbrY?editors=1010

интерфейс: jquery-плагин сервис: подсказки

Answer

Answer

> В случае, если стереть и заново начать набирать - уже не будет срабатывать метод

Да, ответы кешируются, поэтому обработчик заново не вызывается. Поскольку ответ кешируется целиком, то если вы добавляете свой адрес, он тоже останется:

Пример: https://codepen.io/nalgeon/pen/XOrQmx?editors=1010

Under review

Дайте ссылку на проблемную страницу, пожалуйста. Или сделайте пример на https://codepen.io

В приведённом вами примере всё работает.

Я понял в чем проблема. Сейчас функция используется не совсем по назначению. (Я добавляю те города из бд, которых нет в списке.)
Есть ли возможность вызвать какую то функцию, которая будет вызываться в любом случае перед появлением, даже если подсказок нет? Просто такая ситуация сложилась, например по городу Адлер. По факту он входит в Сочи. Но во многих транспортных компаниях это считается как отдельных город и доставка до него иная. Поэтому приходится так извращаться. 

onSuggestionsFetch вызывается вне зависимости от того, найдены подсказки по запросу или нет. Если у вас это не так — дайте ссылку на проблемную страницу или сделайте пример на https://codepen.io

https://codepen.io/anon/pen/Rvbvoj?editors=1111


Не стал ничего удалять, а оставил как есть. По самом коду может быть много вопросов(У меня тоже)) 
В случае на codepen при первом наборе вызывается метод каждый набор символа, при последующих наборах уже не вызывается. 
На боевой версии метод стал вызываться через раз(раньше вызывалось корректно, но насколько раньше не знаю)
Пробовал с Адлер.

Хорошо, а что не так? Я ввёл «адлер», получил в консоли числа от 0 до 4. Какой результат вы ожидаете?

В случае, если стереть и заново начать набирать - уже не будет срабатывать метод

Сейчас еще раз попробовал - понял, что при попытке добавить к результату Адлер, http://joxi.ru/V2VKZgMtd8La1A
Вот тут, suggestion содержит 2 элемента с сервиса и 2 элемента возвращаемых с базы данных. return suggestion
возвращает 4 элемента массива. Но подсказка почему то так и не появляется.

На codepen это так же отслеживается.

Извините, я не совсем понимаю, что не так. Заполнил переменную данными, которыми приходят с сервера. И на codepen Все работает. Но причем не работает все тоже самое на сервере. Ведь ничего не менялось(

Answer

> В случае, если стереть и заново начать набирать - уже не будет срабатывать метод

Да, ответы кешируются, поэтому обработчик заново не вызывается. Поскольку ответ кешируется целиком, то если вы добавляете свой адрес, он тоже останется:

Пример: https://codepen.io/nalgeon/pen/XOrQmx?editors=1010

Могу чем-то ещё помочь?

Подскажите, пожалуйста, в отладке смотрю( возвращаю suggestion с результатами из метода onSuggestionsFetch.
Но при этом подсказка не появляется вовсе. (причем работает когда ввожу например Ад)
Тогда выводится подсказка, и дополнительные города от меня. Но когда ввожу 3 букву (Адл)
Тогда не выводится ничего, хотя с вашего сервиса приходит 2 записи и я еще добавляю

Повторить это в codepen не удается, к сожалению

Если нет воспроизводимого примера проблемы, не смогу помочь, к сожалению.