Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   autocomplete и кэш (https://javascript.ru/forum/jquery/4028-autocomplete-i-kehsh.html)

arturich 15.06.2009 16:46

autocomplete и кэш
 
Добрый всем день. У меня проблема с jquery autocomplete следующего характера: есть два текстовых поля на форме, в первом вводится имя улицы, во втором номер дома. Если ввести в первое поле улицу "А" (предположим) и ввести в поле с номером дома цифру 3, то выйдет список со всеми домами начинающимися с цифры 3. Выбираем дом номер 3. И теперь, если сразу же после этого изменить улицу "А" на улицу "Б" и попробовать ввести цифру 3 в поле с номером дома, то список вновь покажет все дома, начинающиеся с цифры 3 для улицы "А", а не для "Б". То есть данные отображаются из кэша. Если сделать refresh страницы, то все работает как надо. Я перепробовал буквально все. И свойства cacheLength и matchSubset, даже autocomplete="off" для текстового поля, но ничего не помогает. Прошу вашего совета, что сделать, чтобы запрос заново посылал на сервер новые переменные, а не брался из кэша? Спасибо

kez 18.06.2009 17:39

используете jquery.autocomplete.js ?
если да, то сталкивался с той же проблемой.
решил проблему правкой плагина руками.
найдите строку
Код:

var data = options.cacheLength ? loadFromCache(q) : null;
вроде 320 измените на
Код:

var data = null;
возможно где то еще добавлял flushCache(); точно не скажу ибо нет на руках оригинала плагина.

e1f 18.06.2009 19:27

мда... а если в параметрах вызова установить options.cacheLength = 0, это не поможет?

kez 19.06.2009 09:01

нет. функция кэша написана так, что мин принимаемое значение 1.
чем вас не устроило решение что я предложил?

e1f 19.06.2009 12:01

Цитата:

cacheLength Number Default: 10
The number of backend query results to store in cache. If set to 1 (the current result), no caching will happen. Must be >= 1.
1 -- значит кеша нет. Документация говорит так. Чем плохо задать опцию, вместо того, чтобы колупать исходник?
Цитата:

возможно где то еще добавлял flushCache(); точно не скажу ибо нет на руках оригинала плагина.
Скорее всего не устроило вот этим. А если кеш все-таки понадобится?

kez 19.06.2009 13:59

как показывает практика
Цитата:

1 -- значит кеша нет.
не работает

x-yuri 20.06.2009 07:36

Цитата:

Документация говорит так. Чем плохо задать опцию, вместо того, чтобы колупать исходник?
вообще-то да, но этот плагин то ли недописан, то ли не рассчитан на разные типы запросов (нету возможности вызвать setExtraParams)

artu-rich 24.06.2009 10:08

kez, спасибо огромное, это сработало

shantal 29.12.2010 12:34

Код:

var data = options.cacheLength ? loadFromCache(q) : null;
вроде 320 измените на var data = null;
возможно где то еще добавлял flushCache(); точно не скажу ибо нет на руках оригинала плагина.

А у меня не получается, поменяла 320 строку, а где надо добавлять flushCache()? Подскажите пожалуйста

ebuilder 06.01.2012 21:08

Тем кто хочет решение вопроса через параметры, обратите внимание,
для последней что есть version 1.1.3 решение такое:

$('#query').autocomplete({

........параметры......

    noCache:true,

........параметры......

});


Часовой пояс GMT +3, время: 16:00.