gpt4 book ai didi

java - 来自 jQuery 的远程 AJAX 调用验证检查电子邮件有效性不起作用

转载 作者:行者123 更新时间:2023-12-02 05:07:00 24 4
gpt4 key购买 nike

我正在尝试使用 Spring Boot REST API 将用于检查电子邮件可用性的远程方法调用添加到 jQuery 验证。

当使用 jQuery 的远程函数时,我可以从服务器端看到电子邮件的值和服务器响应,但在 Web 客户端中它不会显示错误“电子邮件已被占用”。

@RestController
public class ValidateController
{
@Autowired
MemberService member;

@RequestMapping(method = RequestMethod.POST, value="/checkEmail")
public ResponseEntity<Object> checkEmail(@RequestParam("email") String email)
{
System.out.println("Requested by ajax validator..." + email);
boolean _email = this.member.existEmail(email);
return new ResponseEntity<Object>(_email, HttpStatus.OK);
}
}
$('#validation-form').validate({
errorElement: 'div',
errorClass: 'help-block',
focusInvalid: false,
ignore: "",
rules: {
email: {
required: true,
email: true,
remote: {
url: "http://localhost:8080/easyscan/checkEmail",
type: "post",
//dataType: "json",
data: {
email: function() {
return $("#email").val();
}
}
}
}
},
messages: {
email: {
required: "Please provide a valid email.",
email: "Please provide a valid email.",
remote: "Email address taken."
}
},

最佳答案

我在使用远程方法时遇到的问题是,我的服务器返回带有许多属性的 JSON,而不仅仅是远程函数想要的 true 或 false。因此,我使用 addMethod 深入研究响应并获取我想要的 JSON 属性的值。

$.validator.addMethod("uniqueEmail", function (value, element) {
let emailOrgName = "yourDomain/uniqueEmailCheck?emailId=" + value;
let result = false;
$.ajax({
type: "GET",
url: emailOrgName,
dataType: "JSON",
success: function (data) {
if (data.data.email === 1) {
console.log(data.data.email + ': This email exists.');
result = false;
} else {
console.log(data.data.email + ': This email does not exist.');
result = true;
}
},
async: false
});
console.log(result);
return result;
});

$("#form").validate({
rules: {
email: {
required: true,
email: true,
uniqueEmail: true,
normalizer: function (value) {
return $.trim(value);
}
}
},
messages: {
email: {
required: "Please enter your email address.",
minlength: jQuery.validator.format("Your email address must consist of at least {0} character."),
maxlength: jQuery.validator.format("Your email address must be no longer than {0} characters."),
uniqueEmail: "Your Email address is already registered on our system.",
}
},

// Bootstrap 4 native error style.

errorElement: "div",
errorClass: "is-invalid",
validClass: "is-valid",
errorPlacement: function (error, element) {
error.addClass("invalid-feedback");
if (element.prop("type") === "checkbox") {
error.insertAfter(element.next("label"));
} else {
error.insertAfter(element);
}
},
highlight: function (element, errorClass, validClass) {
$(element).addClass(errorClass).removeClass(validClass);
},
unhighlight: function (element, errorClass, validClass) {
$(element).addClass(validClass).removeClass(errorClass);
}
});

关于java - 来自 jQuery 的远程 AJAX 调用验证检查电子邮件有效性不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56344495/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com