之前沒太多xmlHttpRequest與撰寫CallBack javascript的經驗, 一開始寫程式,就被AJAX.NET的UpdatePanel養壞了。 慢慢瞭解到UpdatePanel只是個偽裝的ajax,背後付出的effort仍然相當龐大後, 才慢慢的想去瞭解ajax該如何撰寫。 想要擺脫AutoPostBack付出的龐大成本,javascript與ajax的能力就一定要能養成。 這邊搭配jQuery的ajax功能,來示範一下在ASP.NET上的作法。
這邊範例的需求是,我們有兩個textbox,一個是ID,一個是Name, 當輸入ID改變時,要帶出Name的資料。(學會之後,就可以擺脫AutoPostBack=true,Text_Changed的方式啦...) 在這裡我把ID帶Name的程式碼,分別寫在三種檔案上來處理。
.ashx(泛型處理常式).aspx(一般網頁頁面).asmx(Web Service)為方便各位下載sample code後可以直接跑, 這邊的Name,就是取first name,加上js傳過來的第二個參數MiddleName:『middle』字樣, last name的部分,則是測試Session值能否被Server端讀取到,所以再補上Session的值『91』 來紀念 代表從server端回傳的Name。 也就是ajax return回來的值是:畫面上輸入的first name+『middle』+ Session[“LastName”] 接著,讓我們繼續看下去。
.ashx 先新增一個泛型處理常式檔案,記得引用System.Web.SessionState與實作IReadOnlySessionState,我們才能在程式碼裡面讀到Session。接參數的部分,使用context.Request.Form["參數名稱]最後return的值,則是使用context.Response.Write(回傳值) .aspx 先新增一個.aspx,接著只保留第一行<%@ Page %>那行在Page_Load的事件撰寫要處理的程式碼接參數的部分,使用的是Request.Form["參數名稱]最後return的值,則是直接Response.Write(回傳值) .asmx 先新增一個.asmx,接著把[System.Web.Script.Services.ScriptService]取消註解新增一個public的method,叫做GetFullName,method上頭加上[WebMethod(EnableSession=true)],才能使用Sessionreturn的資料直接return即可,雖然return的型別是string,但是javascript實際接到的是xml格式的字串有了這三種處理ID回傳Name的程式後, 來看看我們的頁面要怎麼撰寫。
網頁的部分,用三組來當試驗:
view source print ? 01<body> 02 <form id="form1" runat="server"> 03 <div> 04 .ashx: first name<asp:TextBox ID="txtIDbyAshx" runat="server"></asp:TextBox> 05 full name<asp:TextBox ID="txtNamebyAshx" runat="server"></asp:TextBox><br /> 06 07 .aspx: first name<asp:TextBox ID="txtIDbyAspx" runat="server"></asp:TextBox> 08 full name<asp:TextBox ID="txtNamebyAspx" runat="server"></asp:TextBox><br /> 09 10 .ashx: first name<asp:TextBox ID="txtIDbyAsmx" runat="server"></asp:TextBox> 11 full name<asp:TextBox ID="txtNamebyAsmx" runat="server"></asp:TextBox><br /> 12 </div> 13 </form> 14</body>接著使用jQuery的ajax功能,注意的地方:
註冊在change事件ajax option: type:使用posturl的部分,web service需加上method名稱傳入參數的部分,可用json,或一般字串使用『&』串接,如同一般的post或QueryStringajax成功的話,會進入success,失敗會進入error成功回傳的字串,在success的function(回傳值)web service回傳為XML格式,需自行parse使用
ajax的能力未來一定得具備,因為不管是一般的html、畫面冗重的Web form、或是ASP.NET MVC, 要等待Post的過程,對User來說都是種折磨。 既然沒有多難,就順手把它學起來吧!
转载于:https://www.cnblogs.com/feima-lxl/archive/2010/06/08/1753602.html
相关资源:asp.net jquery ajax所有调用例子