2011-06-09 78 views
0

我在jquery.validate插件的addMethod中检出AJAX。即使AJAX调用返回true,也会显示错误。jQuery AJAX即使返回true也会抛出错误

这是代码:

$.validator.addMethod("checkMail", function(value, element) { 
     var email_id = value; 
     $.ajax({ 
      type: "POST", 
      url: "ajax_validation.php", 
      data: {'category_email_mode' : 'add_email', 'email' : email_id}, 
      dataType: "text", 
      success: function(msg){ 
       if(msg == 'true') 
       { 
        return true; 
       } 
       else(msg == 'false') 
       { 
        return false; 
       } 
      } 
     }); 
    } 
},"Email id is already choosen"); 

当AJAX返回true,真不是由函数返回。怎么了?

回答

0

AJAX不能这样工作。您不能从成功回调中返回值 - 回调只是AJAX请求成功后在数据上运行的内容。

如果必须使用AJAX来做到这一点,你需要使它同步:

$.validator.addMethod("checkMail", function(value, element) { 
     var email_id = value; 
     var valid = false; 
     $.ajax({ 
      async: false, // make it synchronous 
      type: "POST", 
      url: "ajax_validation.php", 
      data: {'category_email_mode' : 'add_email', 'email' : email_id}, 
      dataType: "text", 
      success: function(msg){ 
       valid = (msg=='true'); 
      } 
     }); 
     return valid; 
    } 
},"Email id is already choosen"); 

这就是说,你可能会更好过使用,而不是一个AJAX调用PHP内嵌做验证。