原生ajax和JQuery实现异步对注册姓名的校验

一、采用原生ajax实现对用户注册的校验
1.创建一个servlet来实现逻辑
其中省略了数据库的连接操作以及CheckUser(name)方法

	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		try {
			request.setCharacterEncoding("UTF-8");
			//收到来自网页的用户名
		String name  = request.getParameter("name");
		//调用CheckUser(name)方法对改姓名查重
		UserDao userDao = new UserDaoImpl();
			boolean checkUser = userDao.CheckUser(name);
			//对前段返回值
			if(checkUser) {
				response.getWriter().println(1);
			}
			else
				response.getWriter().println(2);
		} catch (Exception e) {
		}
	}
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		doGet(request, response);
	}
}

2.前段网页注册用户代码
(1)注册表格的创建
解释: οnblur="checkUserName(),onblur是鼠标失去焦点的时候执行的行为,也就是鼠标移开用户名这一栏,我这里设置了失去焦点实现一个方法checkUserName()

<table border="1" width="500">
		<tr>
			<td>用户名:</td>
			<td><input type="text" name="name" id="name"  onblur="checkUserName()"><span id="span01"></span></td> 
		</tr>
		<tr>
			<td>密码</td>
			<td><input type="text" name=""></td>
		</tr>
		<tr>
			<td colspan="2"><input type="submit" value="注册"></td>
		</tr>
	</table>

(2)ajax对象的创建
死代码,不需要记忆

function ajaxFunction(){
	   var xmlHttp;
	   try{ // Firefox, Opera 8.0+, Safari
	        xmlHttp=new XMLHttpRequest();
	    }
	    catch (e){
		   try{// Internet Explorer
		         xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
		      }
		    catch (e){
		      try{
		         xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
		      }
		      catch (e){}
		      }
	    }		
		return xmlHttp;
	 }

(3)对上面的checkUserName()方法的实现

function checkUserName(){
		//获取输入框的值 document 整个网页
		var name = document.getElementById("name").value;
		//1. 创建对象
		var request  = ajaxFunction();
		//2. 发送请求
		request.open("POST","/ajaxTest/CheckUserNameServlet",true); 
		//注册状态改变监听,获取服务器传送过来的数据
		request.onreadystatechange =function(){
			if(request.readyState ==4&&request.status==200){
			//设置变量data接受后端传来的返回值
				var data = request.responseText;
				if(data ==1){
					document.getElementById("span01").innerHTML ="<font color = 'red'>用户名已存在</font>";
				}
				else{
					document.getElementById("span01").innerHTML ="<font color = 'green'>用户可用</font>";
				}
			}
		}
		
		request.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
		request.send("name="+name);
	}

二、采用jQuery的方法来实现
前面的方法都不变,唯一改变的就是前段jsp里面的代码

function checkUserName() {
		//1. 获取输入框的内容
		var name = $("#name").val();
		
		//2. 发送请求
		$.post("/day16/CheckUserNameServlet" , {name:name} , function(data , status){
			//alert(data);
			if(data == 1){//用户名存在
				//alert("用户名存在");
				$("#span01").html("<font color='red'>用户名已被注册</font>");
			}else{
				//alert("用户名可用");
				$("#span01").html("<font color='green'>用户名可以使用</font>");
			}
		} );
		//3. 输出响应的数据到页面上。
	}

不需要创建对象,就可以直接实现checkUserName()方法来实现对用户名的校验
浏览效果:
没有被注册过的用户名:
首先输入一个没有被注册过的用户名,检测可以用

已经被注册过的用户名:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值