в режиме реального времени обновляется общее количество результатов, пока пользователь заполняет форму - PullRequest
0 голосов
/ 07 апреля 2011

В настоящее время я работаю над проектом, и клиент запрашивает функцию, которая потребует помощи javascript - с которой я не эксперт, я могу делать основы и т. Д., Но на самом деле не знаю, с чего начать на сайте есть форма (например, расширенный поиск), а справа она должна показывать общее количество результатов, но она должна постоянно обновляться по мере заполнения формы, чтобы пользователь мог заполнить форму. общее количество результатов обновляется, чтобы отразить ...

Я подумал, что, возможно, это можно сделать с помощью ajax, передавая содержимое / значение ввода, выполняя запрос, а затем возвращая общее количество результатов, но как это будет работать для каждого ввода, разве это не просто чтобы быть излишним, я пытался сказать клиенту, что это будет нагрузкой на сервер (что, безусловно, будет), но они кажутся безрассудными при его наличии ...

Любая помощь или методы были бы очень полезны, или если вы уже сталкивались с чем-то подобным, пожалуйста, дайте мне знать.

Спасибо

Ответы [ 2 ]

1 голос
/ 07 апреля 2011

Используя jQuery, вы можете прикрепить функцию к событию blur () каждого элемента управления вводом, который используется в «расширенном поиске» для выполнения вызова ajax к серверу и получить текущее количество результатов.

Таким образом, вызов ajax-сервера будет срабатывать только каждый раз, когда поле ввода заполнено и фокус перемещается в другое место.

Конечно, если у вас много полей, это приведет к вызову каждый раз, когда поле заполнено или изменено, а фокус перемещен. Также было бы разумно убедиться, что значение поля изменилось перед выполнением вызова ajax. Что-то вроде:

var tempVal = "";

// Each field that is used in the advanced search will need to have the
// advancedSearchInput class    

$('.advancedSearchInput').focus(function() {
   tempVal = $(this).val();
});

$('.advancedSearchInput').blur(function() {
   if($(this).val() == tempVal) {
      // Get advanced search values and make ajax call
   }
});
0 голосов
/ 07 апреля 2011

Я склонен избегать такого рода вещей, как вы говорите, это может быть нагрузкой на сервер.Вот несколько вещей, которые я делаю, чтобы уменьшить этот риск:

  • Выполнять поиск / подсчет только тогда, когда пользователь ввел не менее 3 символов
  • Кэшировать условия поиска и их результирующее количество вхранилище памяти, такое как Redis или memcached
  • Используйте полнотекстовый поиск MySQL, если вы используете MySQL DB

Другой вариант - представить нечеткие числа.Таким образом, вы получаете общее количество записей, когда страница загружается, а затем, по мере того, как пользователь печатает, вы случайным образом снимаете часть.Когда пользовательский термин более конкретен или он фактически нажимает кнопку отправки, вы можете выполнять фактические запросы Ajax для получения действительного количества.

Таким образом, пользователь будет видеть что-то вроде:

Поиск: "" Ответ : There are about 3097 records relevant to your search

Поиск : "Ap" Ответ : There are about 1567 records relevant to your search

Поиск : «Apple» выдает запрос Ajax Ответ : There are 542 records relevant to your search

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...