111{
112 var m=document.form1;
113 if (m.password.value != m.confirmPassword.value)
114 {
115 document.getElementById("confirmPasswordStr").style.display = "";
116 document.getElementById("confirmPassword").style.background= "#FF0000";
117 document.getElementById("confirmPasswordStr").innerText = "对不起,密码与重复密码不一致!";
118 }
119 else
120 {
121 document.getElementById("confirmPassword").style.background= "#FFFFFF";
122 document.getElementById("confirmPasswordStr").style.display = "none";
123 }
124}
125
126function checkfield()
127{
128 var m=document.form1;
129 if(m.userName.value.length==0)
130 {
131 alert("对不起,用户名必须为英文字母、数字或下划线,长度为5~20。");
132 m.userName.focus();
133 return false;
134 }
135 if(m.password.value.length==0)
136 {
137 alert("对不起,密码必须为英文字母、数字或下划线,长度为5~20。");
138 m.password.focus();
139 return false;
140 }
141 if (m.password.value != m.confirmPassword.value)
142 {
143 alert("对不起,密码与重复密码不一致!");
144 m.confirmPassword.focus();
145 return false;
146 }
147 if(m.comNm.value.length==0)
148 {
149 alert("对不起,企业名称不能为空!!");
150 m.comNm.focus();
151 return false;
152 }
153 m.submit();
154}
155
156//-->
157</script>
158<body topmargin="0">
159<form name="form1" method="post" action="/Control?act=Register">
160<table width="100%">
161 <tr><td align="center"> <H2>Ajax 演示程序</H1></td></tr>
162 <tr><td align="center"> ------ 企业注册 By Alpha</td></tr>
163</table>
164
165<HR>
166 <table width="400" border="0" cellpadding="1" cellspacing="1" align="center" >
167 <tr>
168 <td><font color="red">*</font></td>
169 <td>用户帐号:</td>
170 <td>
171 <input type="text" name="userName" maxlength="20" style="background:#FFFFFF" onBlur="chkUser()" value=""/>
172 <div id="showStr" style="background-color:#FF9900;display:none"></div>
173 </td>
174 </tr>
175 <tr>
176 <td><font color="red">*</font></td>
177 <td>企业名称:</td>
178 <td>
179 <input type="text" name="comNm" maxlength="100" style="background:#FFFFFF" onBlur="chkComNm()" value=""/>
180 <div id="comNmStr" style="background-color:#FF9900;display:none"></div>
181
182 </td>
183 </tr>
184 <tr>
185 <td><font color="red">*</font></td>
186 <td>用户密码:</td>
187 <td><input type="password" name="password" maxlength="20" style="background:#FFFFFF" onBlur="chkpassword()"/>
188 <div id="passwordStr" style="background-color:#FF9900;display:none"></div>
189 </td>
190 </tr>
191 <tr>
192 <td><font color="red">*</font></td>
193 <td>确认密码:</td>
194 <td><input type="password" name="confirmPassword" maxlength="20" style="background:#FFFFFF" onBlur="chkconfirmPassword()"/>
195 <div id="confirmPasswordStr" style="background-color:#FF9900;display:none"></div>
196 </td>
197 </tr>
198 </table>
199
200 <div align="center">
201 <input type="button" name="ok" value=" 确 定 " onclick="checkfield()">
202
203 <input type="reset" name="reset" value=" 取 消 ">
204 </div>
205
206</form>
207</body>
208</html>
用JavaScript来创建XmlHttpRequest 类向服务器发送一个HTTP请求后,接下来要决定当收到服务器的响应后,需要做什么。这需要告诉HTTP请求对象用哪一个JavaScript函数处理这个响应。可以将对象的onreadystatechange属性设置为要使用的JavaScript的函数名,如下所示:Xmlhttp_request.onreadystatechange =FunctionName;
FunctionName是用JavaScript创建的函数名,注意不要写成FunctionName(),当然我们也可以直接将JavaScript代码创建在onreadystatechange之后。
我们调用request.open()-它用服务器打开套接字频道,使用一个HTTP动词(GET或POST)作为第一个参数并且以数据提供者的URL作为第二个参数。request.open()的最后一个参数被设置为true-它指示该请求的异步特性。注意,该请求还没有被提交。随着对request.send()的调用,开始提交-这可以为POST提供任何必要的有效载荷。在使用异步请求时,我们必须使用request.onreadystatechanged属性来分配请求的回调函数。(如果请求是同步的话,我们应该能够在调用request.send之后立即处理结果,但是我们也有可能阻断用户,直到该请求完成为止。)
再看看数据提供者的URL,url = "/chkUserAndCom",servlet如下:
1/**//*
2 * Created on 2005-12-31
3 *
4 * TODO To change the template for this generated file go to
5 * Window - Preferences - Java - Code Style - Code Templates
6 */
7package com.event;
8
9import javax.servlet.ServletException;
10import javax.servlet.http.HttpServletRequest;
11import javax.servlet.http.HttpServletResponse;
12
13import com.beans.EBaseInfo;
14
15/** *//**
16 * @author Alpha 2005-12-31
17 *
18 * <P>Ajax 演示---企业注册时检查企业用户名和企业名称</P>
19 *
20 * TODO To change the template for this generated type comment go to
21 * Window - Preferences - Java - Code Style - Code Templates
22 */
23public class CheckUserAndComNm {
24 private String msgStr = "";
25 protected void doGet(HttpServletRequest request,HttpServletResponse response)
26 throws ServletException
27 {
28
29 EComBaseInfo info=new EComBaseInfo();
30 String oprate=request.getParameter("oprate")).trim();
31 String userName=request.getParameter("userName");
32 String passWord=request.getParameter("password");
33 String comName=request.getParameter("comName");
34
35 try
36 {
37 if(oprate.equals("chkUser"))
38 {
39 response.setContentType("text/html;charset=GB2312");
40 if(userName.length()<5||userName.length()>20)
41 {
42 msgStr = "对不起,用户名必须为字母、数字或下划线,长度为5-20个字符!";
43 }
44 else
45 {
46 boolean bTmp=info.findUser(userName); //找查数据库中有无该用户名
47 if(bTmp)
48 msgStr ="对不起,此用户名已经存在,请更换用户名注册!";
49 else
50 msgStr ="";
51 }
52 response.getWriter().write(msgStr);
53 }
54 else if(oprate.equals("chkCom"))
55 {
56 response.setContentType("text/html;charset=GB2312");
57 if(comName.length()<6||comName.length()>100)
58 {
59 msgStr = "对不起,公司名称长度为6-100个字符(不包括字符内的空格)!";
60 }
61 else
62 {
63 boolean bTmp=info.findCom(comName); //找查数据库中有无该企业名
64 if(bTmp)
65 msgStr ="对不起,此企业名称已经存在,请更换企业名称注册!";
66 else
67 msgStr ="";
68 }
69 response.getWriter().write(msgStr);
70
71 }
72 }
73 catch(Exception ex)
74 {
75 }
76 finally
77 {
78 request.setAttribute("url",url);
79 }
80 }
81
82 protected void doPost(HttpServletRequest request,HttpServletResponse response)
83 throws ServletException
84 {
85 doGet(request,response);
86 }
87}
88