這篇文章主要介紹了零基礎學習AJAX之製作自動校驗的表單,需要的朋友可以參考下
傳統網頁在註冊時檢測用戶名是否被佔用,傳統的校驗顯然緩慢笨拙。
當ajax出現後,這種體驗有了很大的改觀,因為在用戶填寫表單時,簽署的表單項目已經發送給了伺服器,然後根據用戶填寫好的內容進行資料查詢。在查詢號碼無需頁面刷新就自動給了提示。類似這樣的應用大大提高了使用者的體驗,本節簡單介紹自動校驗表單製作的方法。從原理上分析ajax的作用。
1.建立框架
首先為html框架
<form name="register"> <p><label for = "User">输用户名<input type="text" name="User" id="User"></label><span id="UserResult"></span></p> <p><label for = "passwd1">输入密码<input type="password" name="passwd1" id="passwd1"></label></p> <p><label for = "passwd2">重复输入<input type="password" name="passwd2" id="passwd2"></label></p> <p><input type="submit" value="注册"></p> <p><input type="reset" value="重置"></p> </form>
2.建立非同步請求
當使用者輸完「使用者名稱」開始輸入別的表單時進行後台校驗,程式碼如下:
輸使用者名稱e9051774bbd708d5f8d81bd26f04c0ba
在函數startCheck()中,直接傳送this關鍵字,將文字方塊物件自行作為參數傳遞,而函數本身則先判斷使用者是否輸入為空,如果為空,則直接返回,並聚焦使用者名稱文字框,給予對應的提示。
function startCheck(oInput){ //判断是否有输入,没有输入则直接返回。 if(!oInput.value){ oInput.focus();//聚焦到用户名文本框 document.getElementById("User").innerHTML="用户名不能为空"; return; } //创建异步请求 //.... }
當使用者輸入使用者名稱後,用toLowerCase()轉換為小寫字母,並建立非同步請求。
其中showResult()函數用來顯示伺服器處理傳回的responseText文字。
<script type="text/javascript"> var xmlHttp; function createXMLHttprequest() { if (window.ActiveXObject) xmlHttp = new ActiveXObject("Microsoft.XMLHTTP"); else if (window.XMLHttpRequest) xmlHttp = new XMLHttpRequest(); } function startCheck(oInput) { //判断是否有输入,没有输入则直接返回。 if (!oInput.value) { oInput.focus(); //聚焦到用户名文本框 document.getElementById("User").innerHTML = "用户名不能为空"; return; } //创建异步请求 createXMLHttpRequest(); var sUrl = "1-9.aspx?user=" + oInput.value.toLowerCase() + "×tamp=" + new Date().getTime(); xmlHttp.open("GET", sUrl, true); xmlHttp.onreadystatechange = function() { if (xmlHttp.readyState == 4 && xmlHttp.status == 200) showResult(xmlHttp.responseText); //显示服务结果 } xmlHttp.send(null); } </script>
3.伺服器處理
<%@ Page Language="C#" ContentType="text/html" ResponseEncoding="gb2312" %> <%@ Import Namespace="System.Data" %> <% Response.CacheControl = "no-cache"; Response.AddHeader("Pragma","no-cache"); if(Request["user"]=="isaac") Response.Write("Sorry, " + Request["user"] + " already exists."); else Response.Write(Request["user"]+" is ok."); %>
4.顯示非同步查詢的結果
在使用者輸入表單其它項目時,非同步傳回結果已經在後台悄悄完成。
function showResult(sText) { var oSpan = document.getElementById("UserResult"); oSpan.innerHTML = sText; if (sText.indexOf("already exists") >= 0) //如果用户名已被占用 oSpan.style.color = "red"; else oSpan.style.color = "black"; }
以上程式碼是伺服器回傳結果的顯示。
該案例的完整程式碼
上面是我整理給大家的,希望今後會對大家有幫助。
相關文章:
#以上是零基礎學習AJAX之製作自動校驗的表單的詳細內容。更多資訊請關注PHP中文網其他相關文章!