Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 15.06.2009, 16:46
arturich
 
Сообщений: n/a

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

используете jquery.autocomplete.js ?
если да, то сталкивался с той же проблемой.
решил проблему правкой плагина руками.
найдите строку
Код:
var data = options.cacheLength ? loadFromCache(q) : null;
вроде 320 измените на
Код:
var data = null;
возможно где то еще добавлял flushCache(); точно не скажу ибо нет на руках оригинала плагина.
Ответить с цитированием
  #3 (permalink)  
Старый 18.06.2009, 19:27
Аватар для e1f
e1f e1f вне форума
Профессор
Отправить личное сообщение для e1f Посмотреть профиль Найти все сообщения от e1f
 
Регистрация: 03.04.2009
Сообщений: 1,263

мда... а если в параметрах вызова установить options.cacheLength = 0, это не поможет?
Ответить с цитированием
  #4 (permalink)  
Старый 19.06.2009, 09:01
kez kez вне форума
Аспирант
Отправить личное сообщение для kez Посмотреть профиль Найти все сообщения от kez
 
Регистрация: 12.05.2009
Сообщений: 73

нет. функция кэша написана так, что мин принимаемое значение 1.
чем вас не устроило решение что я предложил?
Ответить с цитированием
  #5 (permalink)  
Старый 19.06.2009, 12:01
Аватар для e1f
e1f e1f вне форума
Профессор
Отправить личное сообщение для e1f Посмотреть профиль Найти все сообщения от e1f
 
Регистрация: 03.04.2009
Сообщений: 1,263

Цитата:
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(); точно не скажу ибо нет на руках оригинала плагина.
Скорее всего не устроило вот этим. А если кеш все-таки понадобится?
Ответить с цитированием
  #6 (permalink)  
Старый 19.06.2009, 13:59
kez kez вне форума
Аспирант
Отправить личное сообщение для kez Посмотреть профиль Найти все сообщения от kez
 
Регистрация: 12.05.2009
Сообщений: 73

как показывает практика
Цитата:
1 -- значит кеша нет.
не работает
Ответить с цитированием
  #7 (permalink)  
Старый 20.06.2009, 07:36
Аватар для x-yuri
Отправить личное сообщение для x-yuri Посмотреть профиль Найти все сообщения от x-yuri
 
Регистрация: 27.12.2008
Сообщений: 4,201

Цитата:
Документация говорит так. Чем плохо задать опцию, вместо того, чтобы колупать исходник?
вообще-то да, но этот плагин то ли недописан, то ли не рассчитан на разные типы запросов (нету возможности вызвать setExtraParams)
Ответить с цитированием
  #8 (permalink)  
Старый 24.06.2009, 10:08
artu-rich
 
Сообщений: n/a

kez, спасибо огромное, это сработало
Ответить с цитированием
  #9 (permalink)  
Старый 29.12.2010, 12:34
Новичок на форуме
Отправить личное сообщение для shantal Посмотреть профиль Найти все сообщения от shantal
 
Регистрация: 29.12.2010
Сообщений: 1

Код:
var data = options.cacheLength ? loadFromCache(q) : null;
вроде 320 измените на var data = null;
возможно где то еще добавлял flushCache(); точно не скажу ибо нет на руках оригинала плагина.
А у меня не получается, поменяла 320 строку, а где надо добавлять flushCache()? Подскажите пожалуйста
Ответить с цитированием
  #10 (permalink)  
Старый 06.01.2012, 21:08
Новичок на форуме
Отправить личное сообщение для ebuilder Посмотреть профиль Найти все сообщения от ebuilder
 
Регистрация: 06.01.2012
Сообщений: 1

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

$('#query').autocomplete({

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

    noCache:true,

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

});
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
extraParams в autocomplete be3 jQuery 12 17.04.2014 17:00
Кэш браузера MaxPayne Общие вопросы Javascript 3 13.07.2009 19:27
плагин autocomplete от jquery Anthony jQuery 0 14.12.2008 22:48
Большой JS файл. Кэш IE6. deadpsh Общие вопросы Javascript 1 26.11.2008 23:38
кэш и JavaScript Deep Общие вопросы Javascript 5 24.05.2008 01:23