Validate验证用户是否存在
HTML代码
<form id="forminfo" action="" method="post">
<div>
<label for="username">用户名:</label>
<input type="text" placeholder="输入用户名"
id="username" name="username" >
</div>
<br>
<div>
<label for="password">用户密码:</label> <input type="password"
placeholder="输入用户密码" id="password" name="password" >
</div>
<div>
<button type="submit" id="submitbtn" >提交</button>
</div>
</form>
Servlet代码
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setCharacterEncoding("UTF-8");
request.setCharacterEncoding("UTF-8");
PrintWriter out = response.getWriter();
//拿到前台发来的json中的username的数据
String username = request.getParameter("username");
//检验信息,向流中输出false或是true的字符串
//remote只能识别true或false以及其字符串,addmethod中的AJAX可以识别其它字符串
if("huq".equals(username)
out.println("false");
else
out.println("true");
out.flush();
out.close();
}
1.remote验证
$().ready(function(){
$("#forminfo").validate({
rules : {
username : {
remote : {
url : "CheckUserName", //发送到CheckUserName的servlet处理数据
type : "post", //发送方式定为post
datatype : "json", //发送数据为json
data : {"username" : function() {
return $("#username").val();} //发送数据,这是一个json数据
},
}
},
messages : {
username : {
remote : "用户已经存在"
}
}
})
})
2.addMethod验证
$().ready(function(){
$.validator.addMethod("checkuser",function(value,element,params){
var i=false;
$.ajax({
async:false, //设为同步,否则会先执行下面的return i
url : "CheckUserName", //发送到CheckUserName的servlet处理数据
type : "post", //发送方式定为post
datatype : "json", //发送数据为json
data : {"username" : $("#username").val()}, //发送数据,这是一个json数据
success : function(data){
if(data=="false"){
i = false;
}else{
i = true;
}
} //数据成功处理后的处理
})
return i; //false表示出错输出错误信息,true表示正确不输出错误信息
});
$("#forminfo").validate({
rules : {
username : {
checkuser : true
}
},
messages : {
username : {
checkuser : "用户名已经存在"
}
}
});
})
这就是两种利用validate验证用户是否存在的方式
需要注意
- remote只能接收true或是false及其字符串,而addMethod中的AJAX验证则是可以接收其它字符串
- validate的rules里面的规则都只能接收true或是false,所以addMethod中的最后返回一个boolean
- addMethod里的AJAX验证最好是同步,否则的话,异步验证,会导致,数据尚未处理完毕,addMethod就返回boolean数据了