2011-06-09 101 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內嵌做驗證。

相關問題