Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Проверка наличия логина в БД при регистрации, с помощью ajax (https://javascript.ru/forum/misc/8708-proverka-nalichiya-logina-v-bd-pri-registracii-s-pomoshhyu-ajax.html)

storng 09.04.2010 15:17

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

storng 09.04.2010 15:47

Вопрос, собственно, как лучше реализовать проверку логина с помощью AJAX в форме регистрации.
Если логин уже есть - то сообщить человеку, если нет логина - то пустить дальше на этап регистрации.

Т.е. интересует эта проверка без перезагрузок страниц.

x-yuri 09.04.2010 18:45

отправляешь ajax-запрос и отменяешь отправку формы, при получении ответа отправляешь форму программно (если нужно)

storng 09.04.2010 19:24

Цитата:

Сообщение от x-yuri (Сообщение 50814)
отправляешь ajax-запрос и отменяешь отправку формы, при получении ответа отправляешь форму программно (если нужно)

Так у меня ведь и отменена отправка формы изначально, я отправляю аякс запрос, а вот отправить программно форму не пойму как, не подскажете?

x-yuri 09.04.2010 20:24

http://phpclub.ru/talk/showthread.ph...799#post896799


Часовой пояс GMT +3, время: 07:23.