首頁 >web前端 >js教程 >零基礎學習AJAX之製作自動校驗的表單

零基礎學習AJAX之製作自動校驗的表單

亚连
亚连原創
2018-05-25 14:06:151363瀏覽

這篇文章主要介紹了零基礎學習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() + "&timestamp=" + 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實作下拉框連動顯示資料

jquery中的ajax同步與非同步詳解

#jquery中的ajax非同步上傳

#

以上是零基礎學習AJAX之製作自動校驗的表單的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn