Показать сообщение отдельно
  #1 (permalink)  
Старый 09.04.2010, 15:17
Новичок на форуме
Отправить личное сообщение для storng Посмотреть профиль Найти все сообщения от storng
 
Регистрация: 09.04.2010
Сообщений: 3

Проверка наличия логина в БД при регистрации, с помощью 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 минут на мой пост.
Ответить с цитированием