Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 15.11.2010, 09:41
Аватар для InviS
Кандидат Javascript-наук
Отправить личное сообщение для InviS Посмотреть профиль Найти все сообщения от InviS
 
Регистрация: 19.02.2010
Сообщений: 116

помогите с капчей, пожалуйста...
Ребят, не могу сделать проверку капчи.. точнее я ее делаю, а форму отправить не могу.. вот код:
$(".data").submit(function(e){
        var result = false;
        $.post("ajax.php",{q : "captch"},function(data){
            var captch = $("#captch").val();
            
            if (captch != data){
                alert("Капча введена неверно!");
            } else {         // отправка формы
                return true;
            }
        });
        return result;   
    });


В любом случае форма не отправляется из-за асинхронности .post запроса... Если внутри post писать return - не работает, а если снаружи - отработает быстрее, чем придет ответ... Что делать?
Ответить с цитированием
  #2 (permalink)  
Старый 15.11.2010, 09:48
Аватар для Gvozd
Матрос
Отправить личное сообщение для Gvozd Посмотреть профиль Найти все сообщения от Gvozd
 
Регистрация: 04.04.2008
Сообщений: 6,246

послать синхронный запрос вам следует.
Ответить с цитированием
  #3 (permalink)  
Старый 15.11.2010, 10:06
Аватар для subzey
Пионэр
Отправить личное сообщение для subzey Посмотреть профиль Найти все сообщения от subzey
 
Регистрация: 16.11.2009
Сообщений: 1,322

А я бы посоветовал проверять капчу сразу на сервере.

А то это странный какой-то Тьюринг-тест, клиенту приходит правильный ответ.

— Пароль?
— Эээ, qwerty
— Нет, пароль не qwerty, а 12345! Пароль?
12345!
— Проходи!
Ответить с цитированием
  #4 (permalink)  
Старый 15.11.2010, 10:06
Аватар для micscr
Профессор
Отправить личное сообщение для micscr Посмотреть профиль Найти все сообщения от micscr
 
Регистрация: 10.09.2009
Сообщений: 1,577

var isChecked = false;
$(".data").submit(function(e){
        if (isChecked ) return true;
        $.post("ajax.php",{q : "captch"},function(data){
            var captch = $("#captch").val();
             
            if (captch != data){
                alert("Капча введена неверно!");
            } else {    
               isChecked = true;    
               $(".data").submit();                
            }
        });
        return false;  
    });

Плюс проверяй равенство капчи на сервере, а возвращай результат сравнения.
Ответить с цитированием
  #5 (permalink)  
Старый 15.11.2010, 11:08
Аватар для InviS
Кандидат Javascript-наук
Отправить личное сообщение для InviS Посмотреть профиль Найти все сообщения от InviS
 
Регистрация: 19.02.2010
Сообщений: 116

micscr,
что-то мне кажется, что форма сработает по второму клику.. запрос ведь асинхронный...
Gvozd,
Это делается только через .ajax?
Ответить с цитированием
  #6 (permalink)  
Старый 15.11.2010, 11:50
Аватар для micscr
Профессор
Отправить личное сообщение для micscr Посмотреть профиль Найти все сообщения от micscr
 
Регистрация: 10.09.2009
Сообщений: 1,577

Сообщение от InviS Посмотреть сообщение
micscr,
что-то мне кажется, что форма сработает по второму клику.. запрос ведь асинхронный...
чего бы ей сработать? Флаг разрешительный выставится только если ответ пришел верный.
А вот то что надо не дать кликать пока предыдущий клик обрабатывается - это да, чтобы не множились проверки. Тут по разному можно или флагом, что обработка или кнопку сабмита скрыть.
Ответить с цитированием
  #7 (permalink)  
Старый 15.11.2010, 11:54
Аватар для InviS
Кандидат Javascript-наук
Отправить личное сообщение для InviS Посмотреть профиль Найти все сообщения от InviS
 
Регистрация: 19.02.2010
Сообщений: 116

ну isChecked изменяется только в самом обработчике... т.е. он станет true после того, как мы нажмем... т.к. проверка этого условия стоит вначале, то ничего не произойдет в первый раз.. Ну мне так кажется
Ответить с цитированием
  #8 (permalink)  
Старый 15.11.2010, 11:57
Аватар для micscr
Профессор
Отправить личное сообщение для micscr Посмотреть профиль Найти все сообщения от micscr
 
Регистрация: 10.09.2009
Сообщений: 1,577

Сообщение от InviS Посмотреть сообщение
Ну мне так кажется
креститься надо если кажется.

Сообщение от InviS Посмотреть сообщение
т.е. он станет true после того, как мы нажмем
да ну?
Ответить с цитированием
  #9 (permalink)  
Старый 15.11.2010, 14:59
Аватар для Gvozd
Матрос
Отправить личное сообщение для Gvozd Посмотреть профиль Найти все сообщения от Gvozd
 
Регистрация: 04.04.2008
Сообщений: 6,246

Сообщение от InviS
Это делается только через .ajax?
например, да.
а вообще-то любой jQuery метод реализующий AJAX_фичи, можно настроить глобально
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Пожалуйста, помогите с созданием скрипта! Елизавета Общие вопросы Javascript 10 08.06.2010 13:20
помогите пожалуйста с скриптиком Len4ik Javascript под браузер 2 30.04.2010 20:10
Помогите пожалуйста, очень срочно!!! PAMAC AJAX и COMET 1 20.10.2009 23:38
Помогите, пожалуйста! rzhsasha Ваши сайты и скрипты 2 20.07.2009 21:07
Помогите, пожалуйста zashibis Общие вопросы Javascript 1 02.12.2008 14:07