ajax +Struts 验证用户名是否注册(异步)

<!-- 注册 -->
		<action name="regist" class="WebMemberInfoAction1">
			<result>nz-xc/regist.jsp</result>
		</action>

 
 <script language="javascript">
 var request;
 function createRequest() {
  try {
   request = new XMLHttpRequest();
  } catch (trymicrosoft) {
   try {
    request = new ActiveXObject("Msxml2.XMLHTTP");
   } catch (othermicrosoft) {
    try {
     request = new ActiveXObject("Microsoft.XMLHTTP");
    } catch (failed) {
     request = false;
    }
   }
  }
  if (!request) {
   alert("err Happend!");
   return null;
  }
  return request;
 }
 function checkNameAjax(obj) {
 document.getElementById("loadingImg").style.display="block";
  request = createRequest();
  /*判断选择国家与当前语言是否相同
  	如果相同就不刷新。不相同刷新
  */
  var memberName = obj.value;
  var url = "regist!checkName.shtml?memberName="+memberName ;
  request.open("GET", url, "true");
  request.onreadystatechange = disResult;//隐性的循环
  request.send(null);
 }
 function disResult() {
  if (request.readyState == 4) {
   if (request.status == 200) {
    //一切都OK了,那就该用Javascript去执行你想要的动作了。
        document.getElementById("loadingImg").style.display="none";
        alert(request.responseText);
   } else {
    alert('Something Wrong has Happend!');
   }
  }
 }
</script>

<tr style="width:287px;">
	           			<td width="45px;">姓名:</td>
	           			<td align="left" width="160px;"><input type="text" name="webMember.memberName" id="webMember.memberName" onblur="checkNameAjax(this)"/>
           				</td>
	           			<td>
		           			<div id="loadingImg" style="background-color: ;float: left;width: 82px;text-align: left;display: none">
		           				<img src="nz-xc/loader.gif" height="20px;" width="20px;"/>
		           			   </div>
	           			 </td>
           			</tr>

//验证用户名是否存在
	public String checkName() throws Exception {
		WebMember webMember1 =newsInfoService.findWebMemberByName(memberName);
		String mes = "";
		if(webMember1!=null){
		     mes = "用户名已经存在";
		//	setSuccessMsg("0");//用户名已经存在
		}else{
			mes = "不存在";
			//setSuccessMsg("1");
		}
		System.out.println("mes===="+mes);
		//return ISConstants.IS_OPER_SUCCESS;
		HttpServletResponse response = ServletActionContext.getResponse(); 
		PrintWriter out=response.getWriter();
		out.write(mes);
		out.close();
		return null;
	}




下边这个是验证经典的带下拉框

前台:index.jsp
<html>
<head>
<title></title>
<!-- 验证景区名称是否添加 -->
  <script language="javascript">
 var request;
 function createRequest() {
  try {
   request = new XMLHttpRequest();
  } catch (trymicrosoft) {
   try {
    request = new ActiveXObject("Msxml2.XMLHTTP");
   } catch (othermicrosoft) {
    try {
     request = new ActiveXObject("Microsoft.XMLHTTP");
    } catch (failed) {
     request = false;
    }
   }
  }
  if (!request) {
   alert("err Happend!");
   return null;
  }
  return request;
 }
 function getBackInfo() {
  request = createRequest();
  var scenicname = document.getElementById("scenicname").value;
  scenicname= encodeURI(scenicname);
  scenicname = encodeURI(scenicname);//注重要两次
  if (scenicname==null||scenicname=="") {
   alert("请输入景点名称");
   return false;
  } else {
  var url = "scenic.do?ss=checkName&scenicname=" + scenicname;
  request.open("GET", url, "true");
  request.onreadystatechange = disResult;//隐性的循环
  request.send(null);
  }
 }
 function disResult() {
  if (request.readyState == 4) {
   if (request.status == 200) {
    //一切都OK了,那就该用Javascript去执行你想要的动作了。
        alert(request.responseText);
    alert('done');
   } else {
    alert('Something Wrong has Happend!');
   }
  }
 }
</script>

<body class="thrColAbsHdr">
  <form name="form1" id="form1" action="scenic.do?ss=add">
   景区名称:
   <input type="text"  id="scenicname" class="scenicName" name="scenicName"  onblur="getBackInfo();"  style="color: #999"/>
     </form>

 </body>

</html>

 

action :

public ActionForward checkName(ActionMapping mapping, ActionForm form,
   HttpServletRequest request, HttpServletResponse response)
   throws Exception {
  String name = request.getParameter("scenicname");
  try {
   // 转换编码!
   name = java.net.URLDecoder.decode(name, "utf-8");
  } catch (UnsupportedEncodingException e) {
   e.printStackTrace();
  }
  ScenicDao sdao = new ScenicDao();
  String mes = null;
  PrintWriter out=response.getWriter();
  if(sdao.checkName(name)){
   mes = "该景区名称已经存在";
  }else{
    mes = "可以添加";
  }
  out.write(mes);
  out.close();
//  return mapping.findForward("add");
  return null;    //这里要是返回fordword的话就会报错java.lang.IllegalStateException: Cannot forward after response has been committed 错误,所以要返回null.
 }

 dao:

// 检查景区名称是否存在
 public Boolean checkName(String name) throws Exception {
  Connection conn = util.ConnUtil.conn();
  Statement stmt = conn.createStatement( ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY);
  String sql = "select * from scenic  where  name='" + name + "'";
  ResultSet rs = stmt.executeQuery(sql);
  if (rs.next()) {
   rs.close();
   stmt.close();
   conn.close();
   return true;
  } else {
   return false;
  }
 }

配置文件:

<action path="/scenic" parameter="ss" input="/index.jsp" scope="request" type="ScenicAction">
</action>

 

 

你可能感兴趣的:(exception,Ajax,struts,String,XMLhttpREquest,action)