AJAX應(yīng)用之注冊(cè)用戶即時(shí)檢測(cè)
更新時(shí)間:2006年07月13日 00:00:00 作者:
AJAX的無(wú)刷新機(jī)制使得在注冊(cè)系統(tǒng)中對(duì)于注冊(cè)名稱的檢測(cè)能即時(shí)顯示。
常見(jiàn)的用戶注冊(cè)是用戶輸入用戶名,后臺(tái)程序檢測(cè)數(shù)據(jù)庫(kù)中用戶名是否重復(fù)而做出注冊(cè)的成功與失敗之提示(當(dāng)用戶注冊(cè)重名時(shí)將返回重新注冊(cè)),或者稍微人性化一點(diǎn)就是在用戶名文本框后添加一個(gè)檢測(cè)按鈕,讓用戶檢測(cè)后再做注冊(cè)。
以上操作,對(duì)于用戶體驗(yàn)方面來(lái)說(shuō)是比較“差勁”的,一個(gè)很好的用戶體驗(yàn)就是:當(dāng)用戶輸入完注冊(cè)用戶名后,Web系統(tǒng)應(yīng)能即時(shí)檢查并即時(shí)顯示,并在檢查和顯示的同時(shí)不影響當(dāng)前頁(yè)面的操作。這也就是“異步獲取數(shù)據(jù)”的要求,而這正是AJAX的強(qiáng)項(xiàng)
比如如下的示例就能展現(xiàn)AJAX的該功能:
http://www.cnbruce.com/test/ajax/t1.htm
當(dāng)輸入已經(jīng)存在的用戶名(如cnbruce、cnrose)時(shí)頁(yè)面將顯示重名不能注冊(cè)(false),否則將顯示可以注冊(cè)(true),這為用戶的注冊(cè)提供了快速的參考,用戶體驗(yàn)至上。
那么下面就來(lái)說(shuō)說(shuō)是如何來(lái)實(shí)現(xiàn)這樣的功能的。
其實(shí)通過(guò)如上的t1.htm的源代碼,各位就可以看到AJAX的精髓
首先是定義XMLHttp對(duì)象
關(guān)于這部分內(nèi)容的說(shuō)明請(qǐng)看:
http://www.cnbruce.com/blog/showlog.asp?cat_id=34&log_id=987
接著是自定義函數(shù)
該函數(shù)的主要功能就是異步獲得cu.asp的內(nèi)容,在此前將先提取當(dāng)前頁(yè)表單元素“u_name”即用戶名文本框zhogn 的值,通過(guò)cu.asp其后的參數(shù)及賦值而得到了不同的結(jié)果(true or false)。
那么這里要說(shuō)的即是cu.asp,他的主要功能就是接受URL參數(shù)name的值做內(nèi)容顯示,該內(nèi)容最終被t1.htm異步獲取。
如何將異步獲取的信息顯示在當(dāng)前頁(yè)呢
其中xmlHttp.readyState中的readyState表示服務(wù)器在處理請(qǐng)求時(shí)的進(jìn)展?fàn)顩r,其值分別有0-4,各有其說(shuō)明情況,具體請(qǐng)參看:
http://www.cnbruce.com/blog/showlog.asp?cat_id=34&log_id=718
使用DHTML中的innerHTML可顯示信息在定義的 <span id="test1">是否能注冊(cè)</span> 上。
其余表單頁(yè)面就不詳敘了
打包文件下載(下載后將后綴 .cnbruce 修改為 .rar):
http://www.cnbruce.com/test/ajax/ajax.cnbruce
常見(jiàn)的用戶注冊(cè)是用戶輸入用戶名,后臺(tái)程序檢測(cè)數(shù)據(jù)庫(kù)中用戶名是否重復(fù)而做出注冊(cè)的成功與失敗之提示(當(dāng)用戶注冊(cè)重名時(shí)將返回重新注冊(cè)),或者稍微人性化一點(diǎn)就是在用戶名文本框后添加一個(gè)檢測(cè)按鈕,讓用戶檢測(cè)后再做注冊(cè)。
以上操作,對(duì)于用戶體驗(yàn)方面來(lái)說(shuō)是比較“差勁”的,一個(gè)很好的用戶體驗(yàn)就是:當(dāng)用戶輸入完注冊(cè)用戶名后,Web系統(tǒng)應(yīng)能即時(shí)檢查并即時(shí)顯示,并在檢查和顯示的同時(shí)不影響當(dāng)前頁(yè)面的操作。這也就是“異步獲取數(shù)據(jù)”的要求,而這正是AJAX的強(qiáng)項(xiàng)
比如如下的示例就能展現(xiàn)AJAX的該功能:
http://www.cnbruce.com/test/ajax/t1.htm
當(dāng)輸入已經(jīng)存在的用戶名(如cnbruce、cnrose)時(shí)頁(yè)面將顯示重名不能注冊(cè)(false),否則將顯示可以注冊(cè)(true),這為用戶的注冊(cè)提供了快速的參考,用戶體驗(yàn)至上。
那么下面就來(lái)說(shuō)說(shuō)是如何來(lái)實(shí)現(xiàn)這樣的功能的。
其實(shí)通過(guò)如上的t1.htm的源代碼,各位就可以看到AJAX的精髓
首先是定義XMLHttp對(duì)象
var xmlHttp = false; try { xmlHttp = new ActiveXObject("Msxml2.XMLHTTP"); } catch (e) { try { xmlHttp = new ActiveXObject("Microsoft.XMLHTTP"); } catch (e2) { xmlHttp = false; } } if (!xmlHttp && typeof XMLHttpRequest != 'undefined') { xmlHttp = new XMLHttpRequest(); } |
關(guān)于這部分內(nèi)容的說(shuō)明請(qǐng)看:
http://www.cnbruce.com/blog/showlog.asp?cat_id=34&log_id=987
接著是自定義函數(shù)
function callServer() { var u_name = document.getElementById("u_name").value; if ((u_name == null) || (u_name == "")) return; var url = "cu.asp?name=" + escape(u_name); xmlHttp.open("GET", url, true); xmlHttp.onreadystatechange = updatePage; xmlHttp.send(null); } |
該函數(shù)的主要功能就是異步獲得cu.asp的內(nèi)容,在此前將先提取當(dāng)前頁(yè)表單元素“u_name”即用戶名文本框zhogn 的值,通過(guò)cu.asp其后的參數(shù)及賦值而得到了不同的結(jié)果(true or false)。
那么這里要說(shuō)的即是cu.asp,他的主要功能就是接受URL參數(shù)name的值做內(nèi)容顯示,該內(nèi)容最終被t1.htm異步獲取。
<!--cu.asp的源碼示例--> <!--#include file="conn.asp"--> <% name=request.querystring("name") Set rs = Server.CreateObject ("ADODB.Recordset") sql = "Select * from u_ser where u_name='"&name&"'" rs.Open sql,conn,1,1 if rs.eof and rs.bof then response.write("true") else response.write("false") end if rs.close set rs=nothing call CloseDatabase %> |
如何將異步獲取的信息顯示在當(dāng)前頁(yè)呢
function updatePage() { if (xmlHttp.readyState < 4) { test1.innerHTML="loading..."; } if (xmlHttp.readyState == 4) { var response = xmlHttp.responseText; test1.innerHTML=response; } } |
其中xmlHttp.readyState中的readyState表示服務(wù)器在處理請(qǐng)求時(shí)的進(jìn)展?fàn)顩r,其值分別有0-4,各有其說(shuō)明情況,具體請(qǐng)參看:
http://www.cnbruce.com/blog/showlog.asp?cat_id=34&log_id=718
使用DHTML中的innerHTML可顯示信息在定義的 <span id="test1">是否能注冊(cè)</span> 上。
其余表單頁(yè)面就不詳敘了
打包文件下載(下載后將后綴 .cnbruce 修改為 .rar):
http://www.cnbruce.com/test/ajax/ajax.cnbruce
相關(guān)文章
解析ajax核心XMLHTTPRequest對(duì)象的創(chuàng)建與瀏覽器的兼容問(wèn)題
這篇文章主要介紹了ajax核心XMLHTTPRequest對(duì)象的創(chuàng)建與瀏覽器的兼容問(wèn)題。需要的朋友可以過(guò)來(lái)參考下,希望對(duì)大家有所幫助2013-12-12
使用wordpress的$wpdb類讀mysql數(shù)據(jù)庫(kù)做ajax時(shí)出現(xiàn)的問(wèn)題該如何解決
這篇文章主要介紹了使用wordpress的$wpdb類讀mysql數(shù)據(jù)庫(kù)做ajax時(shí)出現(xiàn)的問(wèn)題該如何解決的相關(guān)資料,需要的朋友可以參考下2015-10-10
JQuery ajax返回JSON時(shí)的處理方式 (三種方式)
json數(shù)據(jù)是一種經(jīng)型的實(shí)時(shí)數(shù)據(jù)交互的數(shù)據(jù)存儲(chǔ)方法,使用到最多的應(yīng)該是ajax與json配合使用了,下面由腳本之家小編給大家分享JQuery ajax返回JSON時(shí)的處理方式 (三種方式),需要的朋友可以參考下2015-09-09
Ajax 實(shí)現(xiàn)網(wǎng)站劫持的檢測(cè)方法
https可以徹底解決劫持的問(wèn)題。但是一般虛擬主機(jī)都不支持 https,難道http只能任流氓們惡意劫持么?下面通過(guò)本文給大家介紹Ajax 實(shí)現(xiàn)網(wǎng)站劫持的檢測(cè)方法,需要的朋友可以參考下2017-08-08
ajax JSONP請(qǐng)求處理回調(diào)函數(shù)jsonpCallback區(qū)分大小寫
使用ajax進(jìn)行 JSONP跨域請(qǐng)求,因?yàn)楸徽?qǐng)求的對(duì)方的回調(diào)函數(shù)名稱是無(wú)法修改,想到設(shè)置AJAX 的JSONP參數(shù)。但是發(fā)現(xiàn)根本不起作用。最后偶然發(fā)現(xiàn) jsonpcallback是區(qū)分大小寫的2013-09-09
ajax異步實(shí)現(xiàn)文件分片上傳實(shí)例代碼
這篇文章主要給大家介紹了關(guān)于ajax異步實(shí)現(xiàn)文件分片上傳的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-11-11
ajax異步傳值及后端接收參數(shù)的多種方式小結(jié)
這篇文章主要介紹了ajax異步傳值及后端接收參數(shù)的多種方式小結(jié),本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧2023-11-11

