通常,asp.net中,提供ajax請求響應的處理,須要藉助於通常處理程序(*.ashx)或web服務(*.asmx),而且每個ajax請求,都要建一個這樣的文件,如此一來,若是在一個項目中ajax程序多了,勢必會產生一堆的.ashx或.asmx,雖然於程序自己無礙,但那一堆文件看上去總以爲有傷大雅。那麼可不能夠丟掉這些.ashx和.asmx,選擇一種更簡練的方式來作ajax程序呢。
答案是確定的,那就是:WebMethod -- web service 。html
首先在 aspx.cs文件裏建一個公開的靜態方法,而後加上WebMethod屬性。
如:jquery
1 [WebMethod] 2 public static string GetUserName() 3 { 4 //...... 5 } 6 若是要在這個方法裏操做session,那 還得將WebMethod的EnableSession 屬性設爲true。即: 7 [WebMethod(EnableSession = true)]//或[WebMethod(true)] 8 public static string GetUserName() 9 { 10 //...... 11 }
1 $.ajax({ 2 type: "POST", 3 contentType: "application/json", 4 url: "WebForm2.aspx/GetUserName", 5 data: "{}", 6 dataType: "json", 7 success: function(){.......} 8 });
1 /// 2 /// jQuery原型擴展,從新封裝Ajax請求WebServeice 3 /// 4 /// 5 /// 處理請求的地址 6 /// 7 /// 8 /// 參數,json格式的字符串 9 /// 10 /// 11 /// 請求成功後的回調函數 12 /// 13 $.ajaxWebService = function(url, dataMap, fnSuccess) { 14 $.ajax({ 15 type: "POST", 16 contentType: "application/json", 17 url: url, 18 data: dataMap, 19 dataType: "json", 20 success: fnSuccess 21 }); 22 }
好了,這樣咱們請求webmethod方法 就能夠這樣寫了:web
$.ajaxWebService("WebForm2.aspx/GetUserName", "{}", function(result) {......});
最後:若是你的項目中ajax程序很是多(這種狀況是可能存在的,我作過一個網站,是個sns,全程ajax,幾乎每一個操做都用了ajax),
你以爲把WebMethod方法寫在各個aspx頁面裏很零散,那麼你能夠專門建一個頁面(如:WebMethods.aspx)來存放。ajax