利用AJAX來檢測使用者名稱是否已經被註冊
阿新 • • 發佈:2018-12-30
實現功能:
在登錄檔單中,當用戶填寫了使用者名稱後,把游標移開後,會自動向伺服器傳送非同步請求。伺服器返回true或false,返回true表示這個使用者名稱已經被註冊過,返回false表示沒有註冊過。客戶端得到伺服器返回的結果後,確定是否在使用者名稱文字框後顯示“使用者名稱已被註冊”的錯誤資訊!
過程分析:
(1) regist.jsp頁面中給出登錄檔單;
(2)在username表單欄位中新增onblur事件,呼叫send()方法;
(3)send()方法獲取username表單欄位的內容,向伺服器傳送非同步請求,引數為username;
(4)RegistServlet:獲取username引數,判斷是否為“test”,如果是響應true,否則響應false;
regist.jsp
<script type="text/javascript"> function createXMLHttpRequest() { try { return new XMLHttpRequest(); } catch (e) { try { return new ActiveXObject("Msxml2.XMLHTTP"); } catch (e) { return new ActiveXObject("Microsoft.XMLHTTP"); } } } function send() { var xmlHttp = createXMLHttpRequest(); xmlHttp.onreadystatechange = function() { if(xmlHttp.readyState == 4 && xmlHttp.status == 200) { if(xmlHttp.responseText == "true") { document.getElementById("error").innerHTML = "使用者名稱已被註冊!"; } else { document.getElementById("error").innerHTML = ""; } } }; xmlHttp.open("POST", "/ajaxdemo1/BServlet", true); xmlHttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); var username = document.getElementById("username").value; xmlHttp.send("username=" + username); } </script> <h1>註冊</h1> <form action="" method="post"> 使用者名稱:<input id="username" type="text" name="username" onblur="send()"/><span id="error"></span><br/> 密 碼:<input type="text" name="password"/><br/> <input type="submit" value="註冊"/> </form>
RegistServlet.java
public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { request.setCharacterEncoding("utf-8"); response.setContentType("text/html;charset=utf-8"); String username = request.getParameter("username"); if("test".equals(username)) { response.getWriter().print(true); } else { response.getWriter().print(false); } }