1. 程式人生 > >利用AJAX來檢測使用者名稱是否已經被註冊

利用AJAX來檢測使用者名稱是否已經被註冊

實現功能:

在登錄檔單中,當用戶填寫了使用者名稱後,把游標移開後,會自動向伺服器傳送非同步請求。伺服器返回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);
		}
	}