<%@ Page Language="C#" %>
<script runat="server">
protected void Page_Load(object sender, EventArgs e)
{
if (Request["m"] == "validate")
{
System.Threading.Thread.Sleep(5000);
Response.Write(Request["t"] == "Darkthread" ? "OK" : "FAIL");
Response.End();
}
}
protected void btnSubmit_Click(object sender, EventArgs e)
{
Response.Write(txtCode.Text);
Response.End();
}
</script>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title>Async Call</title>
<script src="http://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.4.4.js"
type="text/javascript"></script>
<script type="text/javascript">
$(function () {
function validate() {
$.get("Test.aspx",
{ m: "validate", t: $("#txtCode").val(), r: Math.random() },
function (result) {
window.ajaxValidPass = (result == "OK");
//恢復按鈕及輸入框
$(".clsInput").removeAttr("disabled");
//清除檢核中...顯示字樣
$("#spnDisp").text("");
//檢核未過發出提示
if (!window.ajaxValidPass)
alert("Invalid!");
else //檢核若完成,自動按送出鈕送出表單
$("#btnSubmit").click();
});
}
$("#btnSubmit").click(function () {
//若未經過AJAX檢核,觸發動作
if (!window.ajaxValidPass) {
//停用按鈕及輸入框
$(".clsInput").attr("disabled", true);
//顯示檢核中
$("#spnDisp").text("檢核中...");
//開始AJAX檢核
validate();
//先傳回false,暫時不送出表單
return false;
}
});
});
</script>
</head>
<body>
<form id="form1" runat="server">
<img src="http://statics.plurk.com/a55bdb344892676b0fea545354654a49.gif" />
<asp:TextBox ID="txtCode" runat="server" CssClass="clsInput"></asp:TextBox>
<asp:Button ID="btnSubmit" runat="server" Text="Submit" CssClass="clsInput"
onclick="btnSubmit_Click" />
<span id="spnDisp"></span>
</form>
</body>
</html>