Javascript 带有欧芹js的唯一用户名

Javascript 带有欧芹js的唯一用户名,javascript,jquery,ajax,parsley.js,Javascript,Jquery,Ajax,Parsley.js,我正在尝试使用parsley的js自定义验证程序来检查表单上的唯一电子邮件地址。然而,无论我返回什么,它都不会阻止表单提交 ajax请求checkEmailExists根据电子邮件是否存在返回true或false window.Parsley .addValidator('uniqueUsername', { requirementType: 'string', validateString: function(value, requirement) { $.aj

我正在尝试使用parsley的js自定义验证程序来检查表单上的唯一电子邮件地址。然而,无论我返回什么,它都不会阻止表单提交

ajax请求checkEmailExists根据电子邮件是否存在返回true或false

window.Parsley
  .addValidator('uniqueUsername', {
    requirementType: 'string',
    validateString: function(value, requirement) {
      $.ajax({
        url: "checkEmailExists",
        data: {username: value},
        dataType: 'json',
        method: 'POST',
        data: { email: $( "#email" ).val() },
        async: false,
        success: function(data) {
          return data;
        }
      });
    },
    messages: {
      en: 'This email address already exists!'
    }
  });

<input type="text" id="email" name="email" placeholder="Email" data-parsley-uniqueUsername data-parsley-required="true" data-parsley-type="email"/>
window.Parsley
.addValidator('uniqueUsername'{
requirementType:'字符串',
validateString:功能(值、需求){
$.ajax({
url:“checkEmailExists”,
数据:{username:value},
数据类型:“json”,
方法:“POST”,
数据:{email:$(“#email”).val()},
async:false,
成功:功能(数据){
返回数据;
}
});
},
信息:{
en:“此电子邮件地址已存在!”
}
});

您返回的承诺必须失败或成功,而不是通过
true
false
成功

最简单的方法可能是使用
远程
验证器


不相关,但对于这样的幂等请求,应该使用
GET
,而不是
POST
返回的承诺必须失败或成功,而不是使用
true
false
成功

最简单的方法可能是使用
远程
验证器


不相关,但对于像这样的幂等请求,您应该使用
GET
,而不是
POST
,,正如Marc所说,您的承诺必须失败才能成功,而且您的验证器名称不能有大写字母或特殊字符,所以请尝试以下操作:

// uniqueUsername validator
window.Parsley.addValidator('uniqueusername', {
    validateString: function (value, requirement) {

        xhr = $.ajax({
            url: "users_list_ajax.php",
            dataType: 'json',
            method: 'GET',
            data: {
                action: 'checkUserExists',
                username: value
            }
        });

        return xhr.then(function (data) {
            console.log((data.isUnique == 0));

            if (data.isUnique == 0) {
                return true;
            } else {
                return $.Deferred().reject();
            }
        });
    },
    messages: {
        en: 'Username already exists!',
        ar: 'إسم المستخدم موجود مسبقا'
    },
    priority: 32
});

正如Marc所说,您的承诺必须失败才能成功,而且您的验证器名称不能有大写字母或特殊字符,因此请尝试以下方式:

// uniqueUsername validator
window.Parsley.addValidator('uniqueusername', {
    validateString: function (value, requirement) {

        xhr = $.ajax({
            url: "users_list_ajax.php",
            dataType: 'json',
            method: 'GET',
            data: {
                action: 'checkUserExists',
                username: value
            }
        });

        return xhr.then(function (data) {
            console.log((data.isUnique == 0));

            if (data.isUnique == 0) {
                return true;
            } else {
                return $.Deferred().reject();
            }
        });
    },
    messages: {
        en: 'Username already exists!',
        ar: 'إسم المستخدم موجود مسبقا'
    },
    priority: 32
});

先生,我需要知道欧芹js的最新更新是否也适用于此?我被困在这里了能看看这个吗?谢谢是的,它应该与欧芹新版本一起使用。请确保您的.php页面被正确调用,并且没有返回任何无关的HTTP错误。先生,我需要知道parsley js的新更新是否也可以处理这个问题?我被困在这里了能看看这个吗?谢谢是的,它应该与欧芹新版本一起使用。只需确保正确调用了.php页面,并且没有返回任何不相关的HTTP错误。