在任何網站註冊使用者的時候,都會檢查使用者是否已經存在。很久以前的處理方式是將所有資料提交到伺服器端進行驗證,很顯然這種方式的使用者體驗很不好;後來有了Ajax,有了非同步互動,當使用者輸完使用者名稱繼續填寫其他資訊的時候,Ajax就將資訊發到了伺服器去檢查該使用者名稱是否已經被註冊了,這樣如果使用者名稱已經存在,不用等使用者將所有資料都提交就可以給出提示。採用這種方式大大改善了使用者體驗,今天就一起跟大家聊聊這種互動方式。
下面是用JS擷取使用者Id然後將其發送給user_validate.jsp頁面,然後通過callback方法接收頁面返回的訊息並通知使用者。
function validate(field) {if (trim(field.value).length != 0) {//建立Ajax核心對象XMLHttpRequestcreateXMLHttpRequest();var url = "user_validate.jsp?userId=" + trim(field.value) + "&time=" + new Date().getTime();//佈建要求方式為GET,佈建要求的URL,設定為非同步提交xmlHttp.open("GET", url, true);//將方法地址複製給onreadystatechange屬性//類似於電話號碼xmlHttp.onreadystatechange=callback;//將設定資訊發送到Ajax引擎xmlHttp.send(null);} else {document.getElementById("spanUserId").innerHTML = "";}}function callback() {//alert(xmlHttp.readyState);//Ajax引擎狀態為成功if (xmlHttp.readyState == 4) {//HTTP協議狀態為成功if (xmlHttp.status == 200) {if (trim(xmlHttp.responseText) != "") {//alert(xmlHttp.responseText);document.getElementById("spanUserId").innerHTML = "<font color='red'>" + xmlHttp.responseText + "</font>";}else {document.getElementById("spanUserId").innerHTML = "";}}else {alert("請求失敗,錯誤碼=" + xmlHttp.status);}}}
user_validate.jsp頁面接收使用者Id並根據Id查詢是否已存在,如果存在返回,不存在什麼也不返回。
<%String userId = request.getParameter("userId");if(UserManager.getInstance().findUserById(userId) != null) {out.println("使用者代碼已經存在");}%>
當游標離開使用者代碼文字框觸發檢查方法。
<input name="userId" type="text" id="userId" size="10" maxlength="10" value="<%=userId %>" onblur="validate(this)">
關於怎麼根據使用者Id查詢是否已存在的代碼我就不給大家帖出來了,因為實在太簡單了,貼出來怕浪費大家頻寬。
做Web開發要更多的考慮使用者體驗,多運用用戶端驗證(當然為了安全還要進行一次伺服器驗證)和非同步互動的方式可以有效提升使用者體驗。只有使用者用著舒心,使用者喜歡用我們做的東西,我們的勞動才有意義,我們的目標就是讓使用者滿意。
細節決定成敗,頁面的各種提示都是很小的細節,不要小看這些小細節,做好了可以為你帶來更多的使用者;做的不好很可能讓使用者不再使用。程式猿們用心做好細節,讓使用者愛上Web體驗吧!
Demo下載