JQuery.validate.js中提供了remote来实现Ajax验证。下面我们拿验证数据库中用户名是否已存在来作为例子:
在对JQuery.validate.js有所了解的情况下,js代码如下:
$().ready(function() {
$("#registerForm")
.validate(
{
rules : {
username : {
required : true,
minlength : 4,
remote: {
type:"POST",
url:"${pageContext.request.contextPath}/user_findByUsername?time="+new Date().getTime()+"",
data:{
username: function() {return $("#username").val();}
}
}
},
password : {
required : true,
minlength : 5
},
js中另一段代码:
messages : {
username : {
required : "请输入用户名!",
minlength : "用户名长度至少4位!",
remote: "用户名已存在!"
},
password : {
required : "请输入密码!",
minlength : "密码至少5位"
},
messages : {
username : {
required : "请输入用户名!",
minlength : "用户名长度至少4位!",
remote: "用户名已存在!"
},
password : {
required : "请输入密码!",
minlength : "密码至少5位"
},
上述 js代码把发送了异步请求到一个action中,并且把username参数发送过去了,action中代码如下:
<pre name="code" class="java">public String findByUsername() throws Exception {
HttpServletRequest request = ServletActionContext.getRequest();
HttpServletResponse response = ServletActionContext.getResponse();
String username = request.getParameter("username").trim();
response.setContentType("text/html");
User existUser=userService.findByUsername(username);//完成数据库验证
String value=null;
//特别注意,用户不存在,写出“true"
if(existUser==null){
value="true";
}else value="false";//特别注意,用户存在,写出“false"
response.getWriter().write(value);
return NONE;
}
这样就完成了简单的AJAX验证,谢谢参考!