在使用 BootstrapValidator 做前台表单验证的时候,在验证用户名是否存在的时候,一直无效,主要是两个问题。
1、传参
传参不能再 URL 上传参
即 url: '/ajax/checkUsername/'+$("#username").val(), 这种写法是不可以的
其实系统会默认将该字段的值传入后台
所以这样就行
如果要传其他参数也可以使用 function 方法
2、JSON 返回格式
后台返回给前台的 JSON 格式必须是
之前一直返回 true 和 false 是不行的。
最终代码如下
前台代码
后台代码
1、传参
传参不能再 URL 上传参
即 url: '/ajax/checkUsername/'+$("#username").val(), 这种写法是不可以的
其实系统会默认将该字段的值传入后台
所以这样就行
data : '',//这里默认会传递该验证字段的值到后端
如果要传其他参数也可以使用 function 方法
data:{
username:function(){return $("#username").val()},
},
2、JSON 返回格式
后台返回给前台的 JSON 格式必须是
{
valid:true或false;
}
之前一直返回 true 和 false 是不行的。
最终代码如下
前台代码
- username: {
- message: '用户名不合法',
- validators: {
- notEmpty: {
- message: '用户名不能为空'
- },
- stringLength: {
- min: 4,
- max: 20,
- message: '用户名为4到20个字符'
- },
- regexp: {
- regexp: /^[a-zA-Z0-9_.@]+$/,
- message: '用户名只能由字母、数字和下划线组成'
- },
- remote: {
- type:"POST",
- message: '用户名已经存在',
- url: '/ajax/checkUsername',
- data : '',//这里默认会传递该验证字段的值到后端,
- delay: 2000,//每输入一个字符,就发ajax请求,服务器压力还是太大,设置2秒发送一次ajax(默认输入一个字符,提交一次,服务器压力太大)
- }
- }
后台代码
- @PostMapping("/ajax/checkUsername")
- @ResponseBody
- public String checkUsername(String username) {
- HashMap<String,Boolean> hashMap = new HashMap();
- User user = userService.getUserByUsername(username);
- //可用
- if (user == null) {
- hashMap.put("valid",true);
- } else {
- hashMap.put("valid",false);
- }
- return JSON.toJSONString(hashMap);
- }
您可以选择一种方式赞助本站
支付宝扫一扫赞助
微信钱包扫描赞助
赏