Jquery AJax调用asp.net后台静态方法
2010-12-10 10:57 watsonchia 阅读(1755) 评论(0) 编辑 收藏 举报有了Asp.net Ajax的支持,Jquery Ajax可以调用asp.net页面静态后台方法,类似调用WebService。后台方法必须为static,访问范围为protect/public:
//System.Web.Services //System.Web.Script.Services [WebMethod] [ScriptMethod(ResponseFormat = ResponseFormat.Json)] public static string test(string name) { return name + " " + DateTime.Now.ToString(); }
需要注意的是,静态方法无法访问aspx上的服务端控件,这是可预测,因为并不会每次ajax调用都把带个页面post向服务端。
WebMethod特性是必须的,这样才能被客户端脚本调用,支持远程调用。
ScriptMethod特性是可选的,用于指定调用方法的 HTTP 谓词(GET 或 POST),以及指定输出格式(JSON或XML)。没有此特性,方法则默认只能被HTTP POST方式调用,并且输出将序列化为 JSON。
Asp.net 3.5以上可直接使用以上两个命名空间,Asp.net 2.0需安装Asp.net Ajax,或者单独引用Asp.net Ajax的System.Web.Extensions.dll。
前台调用方式为:
<input id="Button1" type="button" value="button" onclick="test();" /> <script type="text/javascript"> function test() { $.ajax({ url: "Default.aspx/test", type: "POST", data: "{'name':'myname'}", contentType: "application/json", dataType: "json", success: function (data) { alert(data.d); } }); } </script>
如后台方法无参数,data项可填为"{}"。Asp.net 3.5以上使用返回值,需要加上".d",如以上代码里的"data.d",Asp.net 2.0直接使用"data"就行了。原因可能是两者序列化的方法有所不同。