執行個體需求:
利用Ajax技術實現一個頁面不重新整理的,並且驗證一個使用者名稱是否被註冊過的過程。
要求:
在頁面中添加一個文字框標籤用於輸入使用者名稱,添加一個按鈕用於提交使用者資料。驗證的結果被直接列印在頁面上。
操作步驟如下:
1) 開啟Visual Studio 2005建立一個網站
2) 在VS2005工具箱的HTML欄中添加一個 控制項及 控制項。
3) 在<Head></Head>中加入<script type ="text/javascript"></script>標籤,以便進行Ajax引擎的編寫,並在基本定義一個XMLHttpRequest對象,但是並不進行初始化操作。如下代碼所示。
var xmlhttp;
function Validation()
{
//執行個體化XMLHttpRequest對象
xmlhttp =new ActiveXObject ("Microsoft.XMLHTTP");
//找到名為“Text1”的文字框
var name=document .getElementById ("Text1");
//利用Open方法向指定URL
//查詢字串“name”將文字框中的資料傳送到目標頁面
xmlhttp.open("Post","AjaxDemo_1.aspx?name="+name.value);
//設定當伺服器響應返回時用於處理響應的函數名
xmlhttp .onreadystatechange=OnMessageBack;
//送發請求
xmlhttp .send(null);
}
4) 添加OnMessageBack()函數的內容。代碼如下:
function OnMessageBack()
{
//判斷請求狀態及HTTP狀態是否都能滿足條件
if (xmlhttp .readystate==4&&xmlhttp .status==200)
{
//將返回的文本列印到頁面上
document .write (xmlhttp .responsetext);
}
}
5) 下面為Button1添加事件代碼,將其標籤修改為
<input id="Button1" type="button" value="button" onclick="Validation()" />
6) 頁面中的Ajax引擎已經編寫完畢。在上代碼中,大家可以看到該使用者名稱是通過一個名為“name”的查詢字串進行傳遞的,該查詢字串傳遞到伺服器後需要進行幕後處理,因此,要對“AjaxDemo_1.aspx.cs”中的Page_Load方法添加一些ADO.NET代碼。這裡的資料庫使用的是“Northwind”樣本資料庫。代碼如下所示。
protected void Page_Load(object sender, EventArgs e)
{
string name = Request.QueryString["name"];
if (name != null)
{
SqlConnection con = new SqlConnection("");
SqlCommand com = new SqlCommand();
com.CommandText = "";
com.Parameters.Add("@CustomerID",SqlDbType.NChar,5).Value =name;
con.Open();
int count = (int)com.ExecuteScalar();
con.Close();
if (count == 0)
{
Response.Write("<script>alert('該使用者可以用!');</script>");
}
else
{
Response.Write("<script>alert('該使用者已經被佔用,請使用其他使用者名稱!');</script>");
}
}
}
這裡要注意,當伺服器利用Response.Write()方法向用戶端發出響應後,用戶端的Ajax引擎就截獲該響應流,並在我們事先定義的“OnMessageBack()”方法中進行處理。