Нужна помощь в коде - живой поиск на ajax в предыдущих результатах выборки

danneo

Честный
Регистрация
13 Ноя 2007
Сообщения
1.526
Реакции
121
Пользователь вводит 3 буквы, делается полнотекстовый поиск по заголовкам статей, результаты возвращаются.
Но нужно еще учесть следующее:
он ввел 3 буквы, ему вернулось 100 результатов. Далее он нажал еще одну букву (4 уже), вот тут и нужно работать с ранее полученным массивом, чтобы не делать повторную выборку из БД.
Как это сделать, процесс взаимодействия?
 
Перед AJAX запросом проверять нет ли закешированных данных. Если нет - запросить на сервере, есть - использовать.
Ответ AJAX - кешировать, само собой сразу после получения.
Написать поисковик по яваскриптовому массиву (ибо полнотекстовый работать уже не будет, данные не в SQL)
При стирании строки (достаточно даже backspace, можете контроллировать еще минимальный остаток строки) - чистить кеш.
 
Все эти 100 результатов передаются в браузер?
Если ответ да, то храните результат в глобальной переменной и при вводе следующей буквы, проверив, что эта переменная не пустая. Ищите, без ajax запроса на сервер, в этой переменной.
Если нет, то кэшируйте результат запроса к sql на некоторое время на сервере. Хорошая библиотека есть в yii - Для просмотра ссылки Войди или Зарегистрируйся
 
Подскажите, пожалуйста, по кодировке. Везде должно быть windows-1251. Запутался чет я.
js берет из формы строку русского языка, далее в php приходит другая кодировка.
Пробовал в js передавать с помощью encodeURIComponent( search ). Кодирует нормально, но в php не могу преобразовать обратно.
Пробовал так:
PHP:
iconv( "utf-8", "windows-1251",$_POST["query"] )
и
PHP:
urldecode( $_POST["query"] )
не помогает.
 
Решил...
js файл сохранил в utf-8, а в php конвертировал в win-1251:
iconv( "utf-8", "windows-1251",$_POST["query"] )
 
Есть оригинальный файл? Или это он и есть?
 
Назад
Сверху