但偏偏這功能又很常用,現在即使是WebForm只要使用Postback好像就Low掉的感覺
所以一直以來都很想寫篇文章自己記錄一下用法。
一般用法
新增AjaxStart.html、AjaxHandle.aspx兩支程式
AjaxStart.html用來實作向Server端發送Request
AjaxHandle.aspx用來接收Request並回傳結果
AjaxStart.html內容
<html xmlns="http://www.w3.org/1999/xhtml"> <head> <title></title> <script src="http://code.jquery.com/jquery-1.9.1.min.js"></script> <script type="text/javascript"> $(function () { $('#btn_ajax').click(function () { $('#loading').show(); //開始Ajax,顯示讀取中圖片 $.ajax({ type: 'POST', url: 'AjaxHandle.aspx', data: 'id=1', //發送參數 success: function (data) { console.log(data); //輸出結果 $('#div_result').html(data); //將結果呈現在Div裡 $('#loading').hide(); //結束Ajax..關閉讀取中圖片 }, error: function (xhr, ajaxOptions, thrownError) { $("body").append(xhr.status); $("body").append(xhr.responseText); alert("Ajax發生錯誤!!"); } }); }); }); </script> </head> <body> <input type="button" id="btn_ajax" value="StartAjax" /> <span id="loading" style="display:none;">Loading....</span> <div id="div_result" > </div> </body> </html>
AjaxHandle.aspx.cs內容
在新增aspx後,第一步要先將預設產出的Html刪除掉,
以免Ajax回去後,也將這些Html一併回傳
我們可以在Page_Load裡撰寫Code,接收前端給我們參數,再做資料的處理
protected void Page_Load(object sender, EventArgs e) { string ID = Request.Form["ID"]; //接受傳入的參數 Response.Write("Hello ID Value : " + ID); }
再將刪除的區塊改成回傳一個table標籤,當然實際情況會依Request傳入的參數顯示不同資訊
前端接收到可把它Append到一個Div標籤裡,即可完成Ajax動作
回傳Json資料的用法
有時我們會需要Server端回傳的是一個Json字串,再由前端去做資料的處理
可進行以下改寫:
AjaxHandel.aspx.cs內容
protected void Page_Load(object sender, EventArgs e) { JavaScriptSerializer serializer = new JavaScriptSerializer(); List<UserData> _list = new List<UserData>(); //加入5筆假資料 for (int i = 1; i <= 5; i++) { UserData _data = new UserData(); _data.id = i; _data.name = "測試" + i; _list.Add(_data); } var retunJson = serializer.Serialize(_list); Response.Write(retunJson); Response.End(); } public class UserData { public int id { get; set; } public string name { get; set; } }
AjaxStart.html內容
success: function (data) { console.log(data); //輸出結果 $('#div_result').html(data); //將結果呈現在Div裡 var array = $.parseJSON(data); //迴圈取出資料 $.each(array, function (i, item) { var content = "id: " + item.id + "; name: " + item.name; var li = "<li>" + content + "</li>"; $('#div_result').append(li); }); $('#loading').hide(); //結束Ajax..關閉讀取中圖片 },
沒有留言:
張貼留言