function checkUid(){/*验证用户名*/ var uname = document.all.uname.value.trim(); if(uname.length<3){ document.all.unameMsg.innerHTML="<img src="images/check_error.gif" mce_src="images/check_error.gif"/>"+ "对不起,您输入的用户名长度小于3个字符, 请输入一个较长的用户名。"; return false; } else{ document.all.unameMsg.innerHTML="<img src="images/load.gif" mce_src="images/load.gif"/>Loading..."; if(window.ActiveXObject){//创建xmlHttpRequest对象 xmlHttp = new ActiveXObject("Microsoft.XMLHTTP"); } else if(window.XMLHttpRequest){ xmlHttp = new XMLHttpRequest(); } var uri = "checkUname.action?uname="+uname; uri = encodeURI(uri);//传中文需要转两次 uri = encodeURI(uri);//传中文需要转两次 xmlHttp.open("POST",uri,true); xmlHttp.onreadystatechange = function(){ if(xmlHttp.readyState==4) { if(xmlHttp.status==200) { var flag = xmlHttp.responseText; if(flag.trim()=="true") { document.all.unameMsg.innerHTML="<img src="images/check_error.gif" mce_src="images/check_error.gif"/>"+ "对不起,您输入的用户名<font color='black'>《"+uname+"》"+ "</font>已经有人注册, 请输入一个新的用户名。"; result = false; } else { document.all.unameMsg.innerHTML="<img src="images/check_right.gif" mce_src="images/check_right.gif"/>"; result = true; } } } } xmlHttp.send(null); } }
上面是JavaScript代码 reg.js 里面 var uri = "checkUname.action?uname="+uname; 调用的struts2 action 如下
public void setUname(String uname) { try { this.uname = URLDecoder.decode(uname, "utf-8");//将uname转码 } catch (Exception e) { e.printStackTrace(); } } public String checkUname() throws Exception { HttpSession session = ServletActionContext.getRequest().getSession(); boolean flag = false; List user = userService.findByUname(uname);//检查数据库有无用户名 if (user != null) { flag = true; session.setAttribute("flag", flag); } else { session.setAttribute("flag", flag); } return SUCCESS; }
还涉及第三个页面 flag.jsp 里面值有flag的值<s:property value="#session.flag" />
reg。js根据flag的值来确定用户名是否存在