ASPX页面AJAX调用ASPX后台

本文介绍了在ASP.NET WebForm中使用AJAX调用后台方法的两种方法:一是通过引用WebService并使用静态方法;二是直接在后台处理请求流并手动输出JSON响应。这两种方式在WebForm中实现异步更新提供了灵活性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

虽然aspx现在用的越来越少,但是以前的一些项目仍旧是使用WebForm来实现的,我们仍然会遇到使用WebForm 并且实现AJAX的需求:

现在提供两种方法来实现aspx页面通过ajax调用aspx后台的方法。

1 是 引用webservrice 并且使用静态方法

后台代码:

using System.Web.Services; //WebMethod 依赖于此引用

        [WebMethod]
        public static int Add(int num1, int num2)
        {
            return num1 + num2;
        }

前台调用:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

<script src="Scripts/jquery-1.10.2.min.js"></script> //引入jquery

       function add(a, b) {

           $.ajax({

               url: "WebFprmAjax.aspx/Add",

               type: "POST",

               contentType: "application/json; charset=utf-8",

               dataType: "json",

               data: JSON.stringify({

                   num1: a,

                   num2: b

               }),

               success: function (data) {

                   alert(data.d)

               }

           })

       }

  

2 是 手工输出请求流的形式

后台代码:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

protected void Page_Load(object sender, EventArgs e)

{           

    if (!string.IsNullOrWhiteSpace(this.Request.Form["type"]) && (this.Request.Form["type"] == "ajax"))

    {

        this.DoCallback();

    }

}

//根据不同的action 确认需要调用的是哪一个方法,并输出返回结果

private void DoCallback()

{

    string action = this.Request.Form["Action"];

    this.Response.Clear();

    this.Response.ContentType = "application/json";

    string writeText = string.Empty;

    switch (action)

    {

        case "Subtraction":

            writeText = Subtraction();

            break;

    }

    this.Response.Write(writeText);

    this.Response.End();

}

//实际负责计算的方法

private string Subtraction()

{

    int a = int.Parse(this.Request.Form["num1"]);

    int b = int.Parse(this.Request.Form["num1"]);

    var result = new

    {

        statue = true,

        msg = a + b

    };

    //使用Newtonsoft来序列化一个匿名对象,从而实现转化为json返回格式

    return Newtonsoft.Json.JsonConvert.SerializeObject(result);

}

    

前台调用:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

function sub(a,b)

        {

            $.ajax({

                url: "WebFprmAjax.aspx?v=" new Date().getTime(), //防止被浏览器缓存

                type: 'POST',

                dataType: 'json',

                timeout: 10000,

                data: { <br>            Action: "Subtraction",  //调用方法名

            type: "ajax"//自定义标识判断ajax方法

            num1: a, num2: b //提交的数据

               } ,

                //contentType: "application/json; charset=utf-8", //不能使用接送 会造成request.form 无法获取到对应参数

                success: function (data) {                   

                    if (data.statue) {

                        alert(data.msg)

                    }

                    else {

                        alert("系统忙请稍后再试!");

                    }

                }

            });

        }

  以上是在webForm页面ajax调用自身后台页面的两种方式,各有其优点。

转载记录:ASPX页面AJAX调用ASPX后台 - 落叶落 - 博客园

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值