通过ajax访问aspx的CodeBehind中的方法
2013-12-20 20:32
531 查看
引言
在项目中突然看到,aspx中的ajax可以访问aspx.cs中的方法,觉得很新奇,也许是lz少见多怪,不过,真的有发现新大陆似的那种兴奋,你也许知道这代表什么,学会了这种方式,代表你以后,可以建更少的页面,更少ashx,更少的.....能不兴奋吗?在lz的印象中,ajax一般都和一般处理程序联系起来的,请求另外的aspx页面就不说了,而请求自身CodeBehind中的方法真的很少见,这里记录一下,也许也有跟我一样不知道的朋友,希望能帮到你。只是知道ajax可以访问webservice中加webmethod特性的方法,没想到也可以访问aspx中加webmethod的方法。幸亏现在知道了。ajax配置
测试:模拟一个小学二年级的加法运算,通过ajax将值传给default.aspx.cs中的Add方法,通过该方法完成计算,返回结果。Default.aspx
ajax的使用方法这里就不多说了。
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="Wolfy.AjaxSelf.Default" %> <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title></title> <script type="text/javascript" src="jquery-1.10.2.js"></script> <script type="text/javascript"> $(function () { $("#btn").click(function () { var num1 = $("#num1").val(); var num2 = $("#num2").val(); $.ajax({ type: "POST",// url: "Default.aspx/Add", data: "{num1:'"+num1+"',num2:'"+num2+"'}", contentType: "application/json", dataType: "json", success: function (data) { $("#num3").val(data.d); }, error: function (msg) { alert(msg.status); } }); }); }); </script> </head> <body> <form id="form1" runat="server"> <div> <input type="text" id="num1" name="name" value="1" /> <label>+</label> <input type="text" id="num2" name="name" value="1" /> <input type="button" name="name" id="btn" value="=" /> <input type="text" id="num3" name="name" value="1" /> </div> </form> </body> </html>
Default.aspx.cs
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.Services; using System.Web.UI; using System.Web.UI.WebControls; namespace Wolfy.AjaxSelf { public partial class Default : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { } [WebMethod] public static int Add(int num1, int num2) { return num1 + num2; } } }
测试结果
![](http://images.cnitblog.com/blog/511616/201312/20201750-0a0f16329fc94735a14dce0d83430f0c.png)
注意
ajax中的type必须为“POST”,否则:![](http://images.cnitblog.com/blog/511616/201312/20201954-6bb0163a7baa4839bb2b7a4420f9dd91.png)
Ajax中的data,中键必须与方法中参数名字相同,否则:
![](http://images.cnitblog.com/blog/511616/201312/20201954-6bb0163a7baa4839bb2b7a4420f9dd91.png)
codeBehind中的方法必须加WebMethod特性,必须为静态方法,否则:
![](http://images.cnitblog.com/blog/511616/201312/20201954-6bb0163a7baa4839bb2b7a4420f9dd91.png)
这是其中需要注意的地方,至于为什么必须是静态的,lz也问了很多人,也不是很懂,这里就不班门弄斧了,有知道的朋友,留下你的足迹,也可以相互沟通一下。
总结
这种方式,也是在看项目中,遇到的,真的是第一次见,真的很开心,现在遇到了。遇到了,就拿出来,记录一下,分享一下,开心一下。这种方式跟ajax访问webservice确实很像,但是为什么必须是静态的呢?也许你知道,请一起讨论,让更多的朋友也知道。
相关文章推荐
- WebForm.aspx 页面通过 AJAX 访问WebForm.aspx.cs类中的方法,获取数据(转)
- WebForm.aspx 页面通过 AJAX 访问WebForm.aspx.cs类中的方法,获取数据
- WebForm.aspx 页面通过 AJAX 访问WebForm.aspx.cs类中的方法,获取数据(转)
- 通过独立html用ajax访问基于ssh2中方法的问题
- asp.net利用Ajax和Jquery在前台向后台传参数并返回值,通过aspx.cs中的静态方法+WebMethod进行处理
- 通过反射访问私有方法
- 表单用serialize()序列化并且通过ajax向后台传值,后台方法参数传递问题
- Wex5 通过ajax访问远程数据
- Asp.net 使用Ajax 控件访问服务端的方法与,服务端访问客户端的方法
- JQuery其中可以跨域访问的AJAX方法
- HttpClient 通过域名访问请求接口出现java.net.UnknownHostException解决方法
- jquery的ajax post 方法传值到后台,无法通过HttpServletRequest得到
- 树莓派下配置samba共享目录以及通过window和linux访问方法
- 谷歌的ajax.googleapis.com被墙导致访问很多国外网站很慢的解决方法
- ajax能访问struts action中特定的某个方法
- 【前端优化】通过六种方法提高网站访问速度 (转http://www.cnblogs.com/fengyin/archive/2011/01/18/1938628.html)
- SQL SERVER 2008 通过链接服务器(Linked Server)访问 ORACLE 9i /10g的方法 (亲测)
- 通过img标签调用实现静态页面访问次数统计的简单方法
- Ajax通过jsonp实现跨域访问,访问成功但走error不走success的的问题解决