您的位置:首页 > Web前端 > JavaScript

validator配合ajx验证,并使用servlet处理json数据

2017-09-20 19:33 501 查看
导包一定要先导jquery包,再导jquery.validator包,前后顺序不可以弄混

<script type="text/javascript">
$(function() {
//绑定form表单的ID
$("#myForm").validate({
rules : {
//input标签的name值
"username" : {
required : true,
maxlength : 8,
checkUN:true
},
"password" : {
required : true
},
"repsw" : {
required : true,
equalTo : "#psw"
},
"email" : {
required : true,
email : true
},
"name" : {
required : true
},
"birthday" : {
required : true,
date : true
},
"code" : {
required : true
}

},
messages : {
"username" : {
required : "请输入用户名",
maxlength : "输入长度不能大于8个字符"
},
"password" : {
required : "请输入密码"
},
"repsw" : {
equalTo : "两次密码输入不一致"
}
},
errorElement : "label",
highlight : function(element, errorClass)//针对验证的表单添加高亮显示
{
$(element).addClass(errorClass);
},
success : function(label) {
label.html("").addClass("valid");
}
});

$.validator.addMethod("checkUN",function(){
var flag = false;
$.ajax({
//T1
url:"${pageContext.request.contextPath}/user?method=checkUser",
data:{"username":$("#username").val()},
dataType:"json",
type:"post",
//true 异步
//false 同步
async:false,
//T2
success:function(data){
if (data.result)
flag = true;
}
});
//T3
return flag;
},"用户名已存在");
});
</script>


jQuery validator addMethod自定义验证规则配合了ajx使用,该项目使用ajx时候 使用了同步的刷新方法,因为若是使用异步局部刷新的话,ajax要向后台发送请求并处理,时间复杂度上没有直接return flag快,所以flag会一直为false,这点需要注意。
后台使用servlet来处理 判断数据库中是否存在该用户,控制可否注册

public void checkUser(HttpServletRequest request,
HttpServletResponse response) throws IOException{
boolean result = us.findUserByUsername(request.getParameter("username"));
//{"username":"aaaa","status:200","":{},"":[]}
String jsonString = "{'result':"+result+"}";
//向页面输出json
response.getWriter().println(jsonString);
}


若使用strust来处理json字符串的话,要使用IO流。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: