摘要:AJAX與ASHX範例
AJAX部分
<script language="javascript" type="text/javascript">
$(function () {
var Ans = 76;
$("#process").bind("click", function () { //利用.bind將process物件綁到click事件上
$("#content").mask("waiting");
$.ajax({
method: "POST",
url: "Guess.ashx",
dataType: "xml",
async: true, //是否同步更新
data: {
Guess: $('#Guess').val(), //多筆資料要傳用逗號隔開 最後一筆不用加
Ans: Ans
}, //這行需要逗號
cache: false, //若為true有機會都抓到舊資料可以設false看看是不是這問題
success: CallSuccess, //成功的話就呼叫CallSuccess 下面是失敗的話
error: CallError
});
});
//呼叫成功
function CallSuccess(xml, status) {
var $result = $("root", xml);
$("#content").unmask();
if ($result.find("ErrorMsg").length > 0) {
alert($result.find("ErrorMsg").text());
return;
}
}
//呼叫失敗
function CallError(xml, status) {
alert(status);
}
//按下取消按鈕
$("#cancel").bind("click", function () {
$("#content").unmask();
});
});
</script>
ashx部分
public class Guess : IHttpHandler {
public void ProcessRequest (HttpContext context) {
string sErrMsg = "";
string sGuess = context.Request["Guess"]; //此行與下一行為抓取ajax傳來資料的方式
string sAns = context.Request["Ans"];
context.Response.ContentType = "text/plain";
context.Response.Write("<root>\n");
Thread.Sleep(1000);
if (sGuess != sAns) {
if (int.Parse(sGuess) > int.Parse(sAns))
sErrMsg = "答案比您猜測的還小";
else { sErrMsg = "答案比您猜測的還大"; }
}
else sErrMsg = "答對了!!";
context.Response.Write("<ErrorMsg>" + sErrMsg + "</ErrorMsg>\n");
context.Response.Write("</root>\n");
}
public bool IsReusable {
get {
return false;
}
}
}