Ajax 用戶名驗證是否存在
更新時間:2008年12月27日 23:34:36 作者:
做一個表單驗證里面最簡單的例子,檢查用戶名是否存在,使用Ajax完成表單驗證的正常步驟應(yīng)該是
客戶端收集表單信息。
使用XMLHttpRequest對象提交到服務(wù)器。
服務(wù)器完成驗證的邏輯,返回結(jié)果信息。
瀏覽器端根據(jù)服務(wù)器返回的信息對用戶做出一定的提示。
不過由于我的空間不支持任何服務(wù)器段語言,所以把本應(yīng)在服務(wù)器的邏輯搬到了瀏覽器,由JavaScript來做,服務(wù)器只負(fù)責(zé)提供一個用戶名的列表。最后的效果如下,試著輸入test,cainiao8這些用戶名,都會顯示已注冊。
JavaScript代碼分析
首先,當(dāng)文檔載入完畢的時候,給表格設(shè)置change事件的響應(yīng)函數(shù)ajaxValidate,代碼如下:
程序代碼
addEventSimple(window,'load',function(){
var test = document.getElementById('username');
addEventSimple(test,'change',ajaxValidate);
}
這樣,當(dāng)用戶名文本框內(nèi)的值改變之后,就會調(diào)用ajaxValidate函數(shù),其代碼如下:
程序代碼
function ajaxValidate(){
var options = {
url:'ajax/ajaxUsernames.xml',
listener:callback,
method:'GET'
}
var request = createRequest(options);
request.send(null);
}
它會使用之前介紹的createRequest函數(shù)初始化一個XMLHttpRequest對象,并且將它發(fā)送到服務(wù)器,請求ajaxUsernames.xml文件。
最后就是callback函數(shù)了:
程序代碼
function callback(){
var xmlDoc = this.responseXML;
var root = xmlDoc.getElementsByTagName('root')[0];
var nodes = root.getElementsByTagName("username");
var currentNode = null;
var username = document.getElementById('username').value;
for(var i = 0; i < nodes.length; i++) {
currentNode = nodes[i];
if(username == currentNode.childNodes[0].nodeValue){
document.getElementById('test').innerHTML = '對不起!'+username+'已經(jīng)被注冊。';
return;
}
}
document.getElementById('test').innerHTML = '用戶名' + username +'可以使用!';
}
callback函數(shù)在已經(jīng)存在的用戶名搜索當(dāng)前用戶輸入的名字,判斷是否已經(jīng)存在。
使用XMLHttpRequest對象提交到服務(wù)器。
服務(wù)器完成驗證的邏輯,返回結(jié)果信息。
瀏覽器端根據(jù)服務(wù)器返回的信息對用戶做出一定的提示。
不過由于我的空間不支持任何服務(wù)器段語言,所以把本應(yīng)在服務(wù)器的邏輯搬到了瀏覽器,由JavaScript來做,服務(wù)器只負(fù)責(zé)提供一個用戶名的列表。最后的效果如下,試著輸入test,cainiao8這些用戶名,都會顯示已注冊。
JavaScript代碼分析
首先,當(dāng)文檔載入完畢的時候,給表格設(shè)置change事件的響應(yīng)函數(shù)ajaxValidate,代碼如下:
程序代碼
addEventSimple(window,'load',function(){
var test = document.getElementById('username');
addEventSimple(test,'change',ajaxValidate);
}
這樣,當(dāng)用戶名文本框內(nèi)的值改變之后,就會調(diào)用ajaxValidate函數(shù),其代碼如下:
程序代碼
function ajaxValidate(){
var options = {
url:'ajax/ajaxUsernames.xml',
listener:callback,
method:'GET'
}
var request = createRequest(options);
request.send(null);
}
它會使用之前介紹的createRequest函數(shù)初始化一個XMLHttpRequest對象,并且將它發(fā)送到服務(wù)器,請求ajaxUsernames.xml文件。
最后就是callback函數(shù)了:
程序代碼
復(fù)制代碼 代碼如下:
function callback(){
var xmlDoc = this.responseXML;
var root = xmlDoc.getElementsByTagName('root')[0];
var nodes = root.getElementsByTagName("username");
var currentNode = null;
var username = document.getElementById('username').value;
for(var i = 0; i < nodes.length; i++) {
currentNode = nodes[i];
if(username == currentNode.childNodes[0].nodeValue){
document.getElementById('test').innerHTML = '對不起!'+username+'已經(jīng)被注冊。';
return;
}
}
document.getElementById('test').innerHTML = '用戶名' + username +'可以使用!';
}
callback函數(shù)在已經(jīng)存在的用戶名搜索當(dāng)前用戶輸入的名字,判斷是否已經(jīng)存在。
相關(guān)文章
你的jquery ajax無效和你的jquery引入路徑有關(guān)
當(dāng)你發(fā)現(xiàn)你的jquery ajax無效的時候,不妨使用 fire bug調(diào)試一下,這時你會發(fā)現(xiàn),提示"$"無效,為什么會有這種提示呢?可能是你引入jquery.js的路徑有問題2013-06-06利用iframe實現(xiàn)ajax跨域通信的實現(xiàn)原理(圖解)
一般情況下都是用在同一域下的ajax請求;但是如果請求是發(fā)生在不同的域下,請求就無法執(zhí)行,并且會拋出異常提示不允許跨域請求,接下來介紹利用iframe實現(xiàn)ajax跨域通信感興趣的朋友可以了解下,或許對你學(xué)習(xí)ajax跨域有所幫助2013-02-02Ajax請求成功后return無法接收到返回值的問題及解決方案
項目中需要頻繁的用到ajax請求,所以就想用一個方法將整個請求封裝起來,直接調(diào)用方法傳遞參數(shù),然后返回請求結(jié)果就可以了,這篇文章主要介紹了ajax請求成功后return無法接收到返回值,需要的朋友可以參考下2023-10-10laravel ajax curd 搜索登錄判斷功能的實現(xiàn)
這篇文章主要介紹了laravel ajax curd 搜索登錄判斷功能的實現(xiàn),本文通過實例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2021-04-04