jquery.validate addMethod错误显示甚至保留为true

时间:2011-01-13 14:23:21

标签: jquery jquery-validate

我正在使用其他方法使用jquery.validate检查capcha验证

 $.validator.addMethod("ajax_validation", function(value) {
  var ajax_data='ajax_mode=capcha_validation&code='+value;
   $.ajax({
      type: "POST",
      url: "/app/ajax_validation/",
      data: ajax_data,
      dataType: "text",
      success: function(msg){
    if(msg=='true')
    {
     alert('true');
     return true;
    }
    else
    {
     alert('false');
     return false;
    }

      }
   });
 }, 'Please enter code correctly!');

即使我保留真值,也会在屏幕上始终显示如何处理此错误。

1 个答案:

答案 0 :(得分:2)

如果要捕获结果并继续进行,则需要以同步格式调用jquery ajax。在您的代码中,无论结果如何,都会发生默认行为(我认为应该是错误消息)。

不要忘记jQuery Ajax调用默认是Async(“Async”中的“A”是异步的)如果你想以同步的方式进行ajax调用,你需要将它变为'false',如下所示: /> (为了清楚起见,我把你的方法放在一个单独的函数中)

    function ajax_validation(ajax_data) {
          var ajax_data='ajax_mode=capcha_validation&code='+value;          
          var result;
          $.ajax({
              type: "POST",
              async: false,
              url: "/app/ajax_validation/",
              data: ajax_data,
              dataType: "text",
              success: function(msg){
                     result= msg.d;
               }  
           });
           return result; 
    }     
        //...

但请注意,ajax同步调用可能会冻结浏览器,通常不是一个好习惯。