隨着對於mvc的習慣使用,aspx頁面漸漸用的不怎麼用了,主要是生命週期感覺上比較慢,要麼就用html+handler一般處理程序來裝下逼。雖然不用,但還是要給剛工作的人講下,相信不少人都想過:既然前臺可以用後臺的變量,那麼能不能用後臺的方法呢?
答案是肯定的,但是有幾個原則:
1.後臺被調用的方法必須是public 或 protected
2.後臺被調用的方法必須是靜態的static
3.後臺被調用的方法必須是 [WebMethod]標籤修飾過的(你沒看錯,這的確是webservice接口方法上的標籤,實際上相當於調接口)
後臺方法模型如下:
[WebMethod] public static string SayHello(string name) { return name+"Hello !"; }
當然 既然可以帶參當然也可以無參無返回值。
現在來說說前臺的調用,廢話不多說 直接上代碼
<input type="text" id="SearchKey" value="" /> <input id="btnserach" type="button" value="搜索" /> <script type="text/javascript"> $(function() { $("#btnserach").click(function() { $.ajax({ type: "post", //要用post方式 url: "Demo.aspx/SayHello",//方法所在頁面和方法名 data: "{'key':'" + $("#SearchKey").val() + "'}", contentType: "application/json; charset=utf-8", dataType: "json", success: function(data) { console.log(data.d); }, error: function(err) { alert(err); } }); }); }); </script>
就這樣 一個簡單的小小的demo就完成了。不過我不得不着重的提一下,我實驗了好久 對於多個參數傳遞過去總是不成功,彷彿後臺始終把它當做一個參數在解析,無論用string 還是int
data: "{'content':'" + $("#content").val() + "','createTime':'" + $("#createTime").val() + "','creator':'" + $("#creator").val() + "'}",
data:"{key:"+ key +",name:"+ name +"}",
這2種都不行,有知道的可以指點下。