<script type="text/javascript"> function checkUsername(username){ //发送ajax 请求 ,验证用户名是否可用 //发送ajax 请求的代码包括4步 这四步骤是固定的 //比传统请求要麻烦一些 //AJAX发送请求全靠浏览器内置的这个对象 XMLHttpRequest对象 // 使用这个XMLHttpRequest对象 可以再浏览器当中单独启动一个新的浏览器线程 ,通过浏览器线程发送该请求 //达到异步效果 //1.创建AJAX核心对象XMLHttpRequest《浏览器内置的,可以直接使用) var xhr; if(window.XMLHttpRequest){ xhr= new XMLHttpRequest(); }else{ xhr = new ActiveXObject("Microsoft.XMLHTTP"); } //2.//注册回调函数 //程序执行到这里的时候,后面的回调函数并不会执行,只是将回调函数注册给xhr对象 //等xhr对象的readyState发生改变的时候,后面的回调函数会执行 //0 请求未初始化(在调用 open() 之前) //1 请求已提出(调用 send() 之前) //2 请求已发送(这里通常可以从响应得到内容头部) //3 请求处理中(响应中通常有部分数据可用,但是服务器还没有完成响应) //4 请求已完成(可以访问服务器响应并使用它) xhr.onreadystatechange = function () { if (xhr.readyState == 4){//服务器响应结束 //可能会遇到404错误 500 需要判断 if (xhr.status == 200){//
//获取到span标签 var nameTipMsg = document.getElementById("nameTipMsg"); //返回文本到span
nameTipMsg.innerText = xhr.responseText; // var s = xhr.responseText; }else{ } } } //当按钮对象注册一个鼠标点击事件,当按钮上发生鼠标单击的时候,会执行回调函数 //myBtn.onclick = function(){} //3. xhr.open("GET","checkusername.do?username=" + username,true);//只开启通道,不发送请求 //4.发送AJAX请求 xhr.send(); } </script> 用户名:<input type="text" name="username" onblur="checkUsername(this.value);"/> <span id="nameTipMsg" style="font-size: 12px;"></span><br> 密码:<input type="password" name="password"> serlvet 3.0 @WebServlet(name = "CheckUsernameAction",urlPatterns = "/checkusername.do") public class CheckUsernameAction extends HttpServlet { @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { resp.sendRedirect("text/html;charset=UTF-8"); PrintWriter out = resp.getWriter(); //获取用户名 String username = req.getParameter("username"); //连接数据库验证用户名是否存在 if("admin".equals(username)){ //用户名不可用 out.print("<font color='red'>用户名被注册</font>"); }else{ out.print("<font color='green'>用户名可注册</font>"); } //响应信息给浏览器 } }