当前aspx中的ajax访问当前.cs里的方法
作者:朱尚 / 日期:2020-12-11 / 分类:Asp.Net / 浏览:1694

在使用ajax做异步请求时,都要建一个aspx或者ashx页面配合使用,如此一来,如果在一个项目中ajax程序多了,势必会产生一堆的附加页面,虽然于程序本身无碍,但那一堆文件看上去总觉得有伤大雅。那么可不可以丢掉这些.ashx和.aspx,选择一种更简练的方式来做ajax程序呢。

答案是肯定的,那就是:WebMethod。将普通页面的方法公布为WebMethod,以Javascript形式访问。

1 方法要public static修饰,返回类型最好是string。

2 方法前添加[WebMethod] 特性。

3 Client端访问时要使用Post方法,和Json作为数据形式进行交互。否则会整页HTML返回。

4 在jQuery访问时,回调中的data.d才时真正的返回内容。

5 访问URL为: http://abc.com/abc.aspx/GetTime 如有个GetTime的公共静态方法。

JavaScript:

    <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>

aspx.cs

    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; }
    }

这里对几个参数做一下简单的说 明,
  type:请求的类型,这里必须用post 。WebMethod方法只接受post类型的请求。
  contentType: 发送信息至服务器时内容编码类型。我们这里一定要用application/json 。
  url:请求的服务器端处理程序的路径,格式为"文 件名(含后缀)/方法名"
  data:参数列表。注意,这里的参数一定要是json格式的字符串,记住是字符串格式,如:" {aa:11,bb:22,cc:33 , ...}"。如果你写的不是字符串,那jquery会把它实序列化成字符串,那么在服务器端接受到的就不是json格式了,且不能为空,即使没有参数也要 写成"{}",如上例。
  dataType:服务器返回的数据类型。必须是json,其他的都无效。因为 webservice 是一json格式返回数据的,其形式为:{"d":"......."}。
  success:请求成功后的回调函数。你 可以在这里对返回的数据做任意处理。

上一篇:jieba中文分词的.NET版本(支持.NET Framework与.NET Core)
下一篇:网站webconfig加404页面
本文标签: .Net WebMethod
本文链接:http://www.banzhuan.net/detail/362