Ajax非同步檢查使用者名稱是否存在

來源:互聯網
上載者:User

在任何網站註冊使用者的時候,都會檢查使用者是否已經存在。很久以前的處理方式是將所有資料提交到伺服器端進行驗證,很顯然這種方式的使用者體驗很不好;後來有了Ajax,有了非同步互動,當使用者輸完使用者名稱繼續填寫其他資訊的時候,Ajax就將資訊發到了伺服器去檢查該使用者名稱是否已經被註冊了,這樣如果使用者名稱已經存在,不用等使用者將所有資料都提交就可以給出提示。採用這種方式大大改善了使用者體驗,今天就一起跟大家聊聊這種互動方式。


下面是用JS擷取使用者Id然後將其發送給user_validate.jsp頁面,然後通過callback方法接收頁面返回的訊息並通知使用者。


[javascript]
function validate(field) { 
    if (trim(field.value).length != 0) { 
        //建立Ajax核心對象XMLHttpRequest  
        createXMLHttpRequest(); 
         
        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); 
        } 
    } 

 function validate(field) {
  if (trim(field.value).length != 0) {
   //建立Ajax核心對象XMLHttpRequest
   createXMLHttpRequest();
   
   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查詢是否已存在,如果存在返回,不存在什麼也不返回。


[html]
<% 
    String userId = request.getParameter("userId"); 
    if(UserManager.getInstance().findUserById(userId) != null) { 
        out.println("使用者代碼已經存在"); 
    } 
%> 

<%
 String userId = request.getParameter("userId");
 if(UserManager.getInstance().findUserById(userId) != null) {
  out.println("使用者代碼已經存在");
 }
%>

當游標離開使用者代碼文字框觸發檢查方法。

[html] 
<input name="userId" type="text" id="userId" size="10" maxlength="10"  value="<%=userId %>" onblur="validate(this)"> 

<input name="userId" type="text" id="userId" size="10" maxlength="10"  value="<%=userId %>" onblur="validate(this)">

 

 
 

 

關於怎麼根據使用者Id查詢是否已存在的代碼我就不給大家帖出來了,因為實在太簡單了,貼出來怕浪費大家頻寬。

 


做Web開發要更多的考慮使用者體驗,多運用用戶端驗證(當然為了安全還要進行一次伺服器驗證)和非同步互動的方式可以有效提升使用者體驗。只有使用者用著舒心,使用者喜歡用我們做的東西,我們的勞動才有意義,我們的目標就是讓使用者滿意。

 


細節決定成敗,頁面的各種提示都是很小的細節,不要小看這些小細節,做好了可以為你帶來更多的使用者;做的不好很可能讓使用者不再使用。程式猿們用心做好細節,讓使用者愛上Web體驗吧!

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.