Ajax 用戶名驗證是否存在
更新時間:2008年12月27日 23:34:36 作者:
做一個表單驗證里面最簡單的例子,檢查用戶名是否存在,使用Ajax完成表單驗證的正常步驟應(yīng)該是
客戶端收集表單信息。
使用XMLHttpRequest對象提交到服務(wù)器。
服務(wù)器完成驗證的邏輯,返回結(jié)果信息。
瀏覽器端根據(jù)服務(wù)器返回的信息對用戶做出一定的提示。
不過由于我的空間不支持任何服務(wù)器段語言,所以把本應(yīng)在服務(wù)器的邏輯搬到了瀏覽器,由JavaScript來做,服務(wù)器只負責提供一個用戶名的列表。最后的效果如下,試著輸入test,cainiao8這些用戶名,都會顯示已注冊。
JavaScript代碼分析
首先,當文檔載入完畢的時候,給表格設(shè)置change事件的響應(yīng)函數(shù)ajaxValidate,代碼如下:
程序代碼
addEventSimple(window,'load',function(){
var test = document.getElementById('username');
addEventSimple(test,'change',ajaxValidate);
}
這樣,當用戶名文本框內(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)存在的用戶名搜索當前用戶輸入的名字,判斷是否已經(jīng)存在。
使用XMLHttpRequest對象提交到服務(wù)器。
服務(wù)器完成驗證的邏輯,返回結(jié)果信息。
瀏覽器端根據(jù)服務(wù)器返回的信息對用戶做出一定的提示。
不過由于我的空間不支持任何服務(wù)器段語言,所以把本應(yīng)在服務(wù)器的邏輯搬到了瀏覽器,由JavaScript來做,服務(wù)器只負責提供一個用戶名的列表。最后的效果如下,試著輸入test,cainiao8這些用戶名,都會顯示已注冊。
JavaScript代碼分析
首先,當文檔載入完畢的時候,給表格設(shè)置change事件的響應(yīng)函數(shù)ajaxValidate,代碼如下:
程序代碼
addEventSimple(window,'load',function(){
var test = document.getElementById('username');
addEventSimple(test,'change',ajaxValidate);
}
這樣,當用戶名文本框內(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)存在的用戶名搜索當前用戶輸入的名字,判斷是否已經(jīng)存在。
相關(guān)文章
Ajax+Servlet實現(xiàn)無刷新下拉聯(lián)動效果
這篇文章主要為大家詳細介紹了Ajax+Servlet實現(xiàn)無刷新下拉聯(lián)動效果,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-11-11

