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

导包一定要先导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流。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值