7.6 实例:验证用户名是否存在
用户在注册的时候,如果用户名已经被使用,那么马上提示用户,不用等到用户填完信息,点注册的时候,才说用户名已经存在。
首先,需要在输入用户名的input元素里,加入onblur事件,账号这部分的html代码如下:

onblur是失去焦点的时候触发,也就是输入用户名,光标移动的时候就会触发。

首先,需要在输入用户名的input元素里,加入onblur事件,账号这部分的html代码如下:

onblur是失去焦点的时候触发,也就是输入用户名,光标移动的时候就会触发。
这里我写了一个checkUser函数:
function checkUser(){ /* 取出用户名 */ var userName=$("#studyNum").val(); /* 提示文字,默认没有提示 */ var tips=""; /* 如果用户名是空的,提示 */ if(userName==""){ tips="不能为空"; /* 把错误信息提示更新到网页 */ $("#userTip").attr("class", "error"); $("#user_tips_info .tipsTXT > span").html(tips); } else{ /* 发起一个ajax请求,get方式发送到AjaxServlet,发送数据是data里面的两组数据 */ $.ajax({ type:"GET", url:"AjaxServlet", data:{ types:"userVali", name:userName }, success:function(msg){ /* 成功执行后调用的回调函数,如果返回的信息是0,账号已经存在,这个0是AjaxServlet返回的 */ if(parseInt(msg)!= 0){ /* 把错误信息提示更新到网页 */ tips="帐号已存在"; $("#userTip").attr("class", "error"); $("#user_tips_info .tipsTXT > span") .html(tips); } } }); }}
为了响应这个请求,我们需要把AjaxServlet写完:
public class AjaxServlet extends HttpServlet{ private static final long serialVersionUID=6033791887340351355L; public void doPost(HttpServletRequest request,HttpServletResponse response){ } public void doGet(HttpServletRequest request,HttpServletResponse response)throws ServletException,IOException{ IUserDao userDao=(IUserDao)SpringUtil.getBean("userDao",this.getServletContext()); request.setCharacterEncoding("UTF-8"); /* 取得参数 */ String type=request.getParameter("types"); if("userVali".equals(type)){ String userName=(String)request.getParameter("name"); response.setContentType("text/plain;charset=UTF-8"); /* 如果用户名存在,那么返回1,否则返回0 */ if(userDao.isUsernameExist(userName)){ response.getWriter().print("1"); } else{ response.getWriter().print("0"); } } }}
而这个servlet如果是低版本,还需要到web.xml里注册。类似这样下图,然后才可以使用AjaxServlet这个名字作为服务的名字
