AJAX與ASHX範例

摘要: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;
        }
    }
 
}