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

Тема в разделе "JavaScript", создана пользователем danneo, 17 ноя 2014.

Модераторы: ZiX
  1. danneo

    danneo Честный

    Регистр.:
    13 ноя 2007
    Сообщения:
    1.463
    Симпатии:
    114
    Пользователь вводит 3 буквы, делается полнотекстовый поиск по заголовкам статей, результаты возвращаются.
    Но нужно еще учесть следующее:
    он ввел 3 буквы, ему вернулось 100 результатов. Далее он нажал еще одну букву (4 уже), вот тут и нужно работать с ранее полученным массивом, чтобы не делать повторную выборку из БД.
    Как это сделать, процесс взаимодействия?
     
  2. BaBL

    BaBL Постоялец

    Регистр.:
    13 ноя 2012
    Сообщения:
    147
    Симпатии:
    88
    Перед AJAX запросом проверять нет ли закешированных данных. Если нет - запросить на сервере, есть - использовать.
    Ответ AJAX - кешировать, само собой сразу после получения.
    Написать поисковик по яваскриптовому массиву (ибо полнотекстовый работать уже не будет, данные не в SQL)
    При стирании строки (достаточно даже backspace, можете контроллировать еще минимальный остаток строки) - чистить кеш.
     
  3. latteo

    latteo Эффективное использование PHP, MySQL

    Moderator
    Регистр.:
    28 фев 2008
    Сообщения:
    1.546
    Симпатии:
    1.418
    Все эти 100 результатов передаются в браузер?
    Если ответ да, то храните результат в глобальной переменной и при вводе следующей буквы, проверив, что эта переменная не пустая. Ищите, без ajax запроса на сервер, в этой переменной.
    Если нет, то кэшируйте результат запроса к sql на некоторое время на сервере. Хорошая библиотека есть в yii - http://www.yiiframework.com/doc/guide/1.1/ru/caching.overview
     
  4. danneo

    danneo Честный

    Регистр.:
    13 ноя 2007
    Сообщения:
    1.463
    Симпатии:
    114
    Подскажите, пожалуйста, по кодировке. Везде должно быть windows-1251. Запутался чет я.
    js берет из формы строку русского языка, далее в php приходит другая кодировка.
    Пробовал в js передавать с помощью encodeURIComponent( search ). Кодирует нормально, но в php не могу преобразовать обратно.
    Пробовал так:
    PHP:
    iconv"utf-8""windows-1251",$_POST["query"] )
    и
    PHP:
    urldecode$_POST["query"] )
    не помогает.
     
  5. danneo

    danneo Честный

    Регистр.:
    13 ноя 2007
    Сообщения:
    1.463
    Симпатии:
    114
    Решил...
    js файл сохранил в utf-8, а в php конвертировал в win-1251:
    iconv( "utf-8", "windows-1251",$_POST["query"] )
     
  6. dim6461

    dim6461 Создатель

    Регистр.:
    4 май 2015
    Сообщения:
    19
    Симпатии:
    1
    Есть оригинальный файл? Или это он и есть?