Jquery AJax调用asp.net后台静态方法
2010-12-10 10:57 watsonchia 阅读(1756) 评论(0) 编辑 收藏 举报有了Asp.net Ajax的支持,Jquery Ajax可以调用asp.net页面静态后台方法,类似调用WebService。后台方法必须为static,访问范围为protect/public:
1 2 3 4 5 6 7 8 | //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。
前台调用方式为:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | <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"就行了。原因可能是两者序列化的方法有所不同。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构