一尘不染

jQuery验证程序和使用AJAX的自定义规则

ajax

我阅读了有关jQuery验证程序的答复,其中概述了一种根据数据库中的值检查用户名的方法。

香港专业教育学院试图实现此方法,但无论从PHP文件返回什么,我总是得到消息,用户名已被使用。

这是自定义方法…

$.validator.addMethod("uniqueUserName", function(value, element) {
  $.ajax({
      type: "POST",
       url: "php/get_save_status.php",
      data: "checkUsername="+value,
      dataType:"html",
   success: function(msg)
   {
      // if the user exists, it returns a string "true"
      if(msg == "true")
         return false;  // already exists
      return true;      // username is free to use
   }
 })}, "Username is Already Taken");

这是验证代码…

username: {
    required: true,
    uniqueUserName: true
},

有没有一种特定的方式我应该从php返回消息。

谢谢

一个


阅读 486

收藏
2020-07-26

共1个答案

一尘不染

您正在执行一个AJAX请求,因此:自定义验证器返回true或false时,验证已经完成。

您将需要使用async

就像是:

function myValidator() {
   var isSuccess = false;

   $.ajax({ url: "", 
            data: {}, 
            async: false, 
            success: 
                function(msg) { isSuccess = msg === "true" ? true : false }
          });
    return isSuccess;
}

警告:

从jQuery 1.8开始,不建议使用async:false和jqXHR($
.Deferred);您必须使用成功/错误/完成回调选项,而不要使用jqXHR对象的相应方法,例如jqXHR.done()或已弃用的jqXHR.success()。

2020-07-26