Проверка наличия логина в БД при регистрации, с помощью ajax
Здравствуйте, уважаемые
Второй день думаю, всю голову сломал над алгоритмом реализации одной задачи.
И ведь наверняка не нужно изобретать велосипед, и кто-нибудь знает как правильно и толково можно её реализовать, посмотрите, пожалуйста.
Есть форма регистрации.
Человек вводит логин, и до того, как пустить его на скрипт регистрации (передать туда данные с формы) я хочу интерактивно проверить, есть такой логин в базе или нет.
Что я делал,
Вешал обработчик на форму onSubmit="return entersubmit();"
В функции обработчика мне с помощью ajax нужно проверить, есть ли такой логин или нет. И далее условие, если логин есть – то выдать сообщение, и не пустить дальше выполнение формы, т.е. вернуть return false, если логина нет, то пустить скрипт дальше выполняться.
Всё звучит хорошо, но я не успеваю это делать, если я в конце этой функции пишу return false, то даже если с помощью аякса я проверю и верну return true, переход к серверному скрипту с формы не происходит.
Вот подобие функции, которая вызывается при событии onSubmit
enterofff=0; // Глобальная переменная (знаю что ужасно, но ничего не могу придумать лучше)
function entersubmit()
{
loginformz=$('#loginenterform').val();
formenterdata='loginenterform='+loginformz;
$.post("checkenter.php", formenterdata,formenter);
if (enterofff==1)
{
return true;
}
return false;
}
Вот функция которая вызывается после отработки AJAX –пост запроса к серверу
function formenter(data,status)
{
if (data=='ok')
{
enterofff=1;
}
}
В таком случае, один раз кликаем по кнопке формы – форма не передаётся дальше серверному скрипту, но меняется значение глобальной переменной enterofff =1
При повторном клике уже происходит переход.
Но это абсолютно кривое решение, и оно меня не устраивает.
Пытался повесить проверку логина при смене фокуса, но тоже наверное криво это всё.
Подскажите, пожалуйста, как лучше с помощью аякса проверить есть ли логин в БД, если есть, то не пускать переход с формы на серверный скрипт, если нет логина – то пустить.
Всем спасибо за то что уделили 5 минут на мой пост.
|