проверка капчи пред отправкой

pehser

Новичок
захотел сделать во время отправки данных с формы проверку коректности капчи
Код:
 $("#review_form").submit(function() 
   {
         $.post("core/core_captcha.php",{ captcha:$("#captcha").val() } ,function(data) 
         {
          data=data.replace(/^\s+/, ""); 
          if(data!='1')
          {
             $("#results").html('');
             $("#results").show();
             $("#results").append(data);
             return false;  
          }               
         });
       
   });
но при условии data!='1' скрипт не останавливает выполнение submit
перепроверил срабатывание условия оно работает вставляет ошибку в $("#results").
Код:
 $("#review_form").submit(function() 
   {
         $.post("core/core_captcha.php",{ captcha:$("#captcha").val() } ,function(data) 
         {
          data=data.replace(/^\s+/, ""); 
          if(data!='1')
          {
             $("#results").html('');
             $("#results").show();
             $("#results").append(data);
             return false;  
          }               
         });
     return false;      
   });
но тогда даже если правильно капча введена то сабмит не срабатывает
как сделать что если data!='1' выводить ошибку и не продолжать самбмит
 

ksnk

прохожий
PHP:
...
             $("#results").append(data);
             return false;  
          }  else {
             $(this).submit(); //!!
          }             
         });
     return false;      
   });
?
 

pehser

Новичок
все равно submit не срабатывает
сделал отладку
PHP:
$("#review_form").submit(function() 
    {
         a='a_stop';
         $.post("core/core_captcha.php",{ captcha:$("#captcha").val() } ,function(data) 
         {
          data=data.replace(/^\s+/, ""); 
	  
          if(data != 1)
          {
             $("#results").html('');
             $("#results").show();
             $("#results").append(data);
	     alert('stop');
	     return false;  
	  }  else {
	     
	     a='a_sub';
             $(this).submit();
          }             
         });
	 alert(a);
         return false;      
    });
при неправильной капеч получаем 2 окошка
stop и a_stop
при правельно капе получаем только одно a_stop вместо ожидаемого a_sub
 

pehser

Новичок
и так чтоб условиями не сбивать столком

PHP:
var a=false;
function af(text) {
       a=text;
     }
$(document).ready(function() {
  $("#review_form").submit(function() 
  {
    af('test'); 
    alert(a);
    return false;
  })
});
результат test

PHP:
var a=false;
function af(text) {
       a=text;
     }
$(document).ready(function() {
  $("#review_form").submit(function() 
  {
    af('test'); 
    $.post("core/core_captcha.php",{ captcha:$("#captcha").val() } ,function(data)
    {
      af('test2'); 
    });
    alert(a);
    return false;
  })
});

результат test вместо то ожидаемого test2
почему
 

С.

Продвинутый новичок
Ничего, что такая проверка капчи обходится в два счета?
 

ksnk

прохожий
Ничего, что такая проверка капчи обходится в два счета?
Ничего. Она, капча, посылается еще раз с полным сабмитом формы. Правда сомнения начинают гложить, такую капчу, получается, можно подбирать неоднократно?
pehser Пойми, пожалуйста, что
$("#review_form").submit(function() {..}) выполняется сразу после нажатия на кнопку, а указанная в параметрах $.post функция - ПОСЛЕ получения ответа от сервера. Так что алерты срабатывают вполне себе разумно.

Вероятно, нужно вместо $(this).submit(); написать $("#review_form").submit(). Кто его знает куда смотрит тот this...
 

weregod

unserializer
вообще валидировать надо хэш, а не значение, и ничего при валидации не сабмитить
 
Сверху