我正在使用https://jqueryvalidation.org/库进行表单验证。将变量传递给控制器时,会在字符串的开头添加逗号。我不知道为什么。
验证码
$('#registrationForm').validate({
rules: {
username: {
nowhitespace: true,
required: true,
minlength: 6,
maxlength: 36,
remote : {
url: '/checkUsername?username=' + encodeURIComponent($('#username').val()),
type: "GET",
data: {
username: function() {
return $('#username').val();
}
}
}
},
这是我的控制器
@GetMapping("/checkUsername")
public boolean checkUsername(@RequestParam("username") String username) {
System.out.println("User: " + username);
return !userService.existsByUsername(username);
}
除了检查发生了什么之外,我还添加了一个用户名显示,当将用户名传递给控制器时,结果如下:
User: ,j
User: ,jo
User: ,jon
User: ,jonk
User: ,jonki
我没有输入这个逗号。他在开始时补充了自己。无处不在。
答案 0 :(得分:1)
为什么要将用户名附加到url部分以及发布数据中的数据字段。这是一个获取请求。不要在那种情况下使用帖子数据。
答案 1 :(得分:0)
您需要从验证码中删除
data: {
username: function() {
return $('#username').val();
}
}
您的最终代码应为
$('#registrationForm').validate({
rules: {
username: {
nowhitespace: true,
required: true,
minlength: 6,
maxlength: 36,
remote : {
url: '/checkUsername?username=' + encodeURIComponent($('#username').val()),
type: "GET"
}
},
或者你可以试试:
remote : {
url: '/checkUsername',
type: "GET",
data: {
username: function() {
return $('#username').val();
}
}
}