Jquery Ajax на KeyDown, который проверяет наличие имени пользователя. Слишком много попаданий в БД? - PullRequest
0 голосов
/ 02 мая 2011

Если у меня есть функция, которая проверяет базу данных, чтобы узнать, доступно ли имя пользователя, и я выполняю Ajax-вызов этой функции в событии keydown jquery, это слишком много обращений к базе данных?Каждый раз, когда пользователь нажимает клавишу, мне звонят.Есть ли лучший подход?

Спасибо

Ответы [ 5 ]

1 голос
/ 18 ноября 2011

Я использую setTimeout ()

var timer;

$('#name').keyup(function(){

    clearTimeout(timer);
    timer = setTimeout(name_check, 300);

});
1 голос
/ 02 мая 2011

В прошлом я использовал jQuery Autocomplete Control . Он выполнит запрос через несколько секунд после того, как пользователь завершит набор текста, предотвращая смешное количество запросов, отправляемых на сервер.

1 голос
/ 02 мая 2011

В качестве альтернативы, почему бы не вызвать проверку на Blur?

Тогда пользователь будет проверять доступность только при нажатии на следующее поле.

1 голос
/ 02 мая 2011

Используйте setTimeOut(), чтобы запустить его через 1 секунду после последнего нажатия клавиши. Если пользователь печатает достаточно быстро, это приведет только к одному запросу. Если индексы вашей базы данных настроены правильно, даже большое количество запросов не должно быть проблемой.

1 голос
/ 02 мая 2011

Я обычно нахожу это реализованным следующим образом на разных сайтах.

  1. Обработка события onchange в текстовом поле имени пользователя / электронной почты и проверка в событии onchange.
  2. У кнопки / изображения рядом с полем «Имя пользователя / электронная почта» с надписью «Проверить наличие» и проведите проверку, если пользователь нажимает на изображение / кнопку.

В любом случае всегда рекомендуется выполнить проверку на стороне сервера, а затем отобразить ошибки (если есть) в качестве ответа.

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