在.net 中,ajax 如何调用本页数据源

近来我发现我一些同事,在用ajax时,用数据源,都喜欢重新新建一个页面.其实我是很不喜欢这种模式,主要原因,一是后期维护麻烦,还要去找哪些页面,二是不能调用一些本页原有的数据方法.因此我在这里做了一个测试的案例,在这里,我们有2种方法来掉用本页的数据源方法. 一种是webservice 方法.  那就是在本页里添加webservice 方法.如下

 

    [WebMethod]
    public static string GetWord(string arg)
    {
        return "调用 webService,值是"+arg;
    }

这样就可以在客户端,前掉调用该方法了.如下

 var sdata = "http://www.cnblogs.com/incubator/archive/2011/12/09/{arg:'" + $("#txtVal").val() + "'}";
                $.ajax({
                    type: "POST",
                    contentType: "application/json;utf-8",
                    data: sdata,
                    //  dataType: "json",
                    url: "Default.aspx/GetWord",
                    success: function (msg) {
                        //  debugger;
                        //   var json = eval('(' + msg + ')');
                        alert(msg.d);
                    },
                    error: function (XMLHttpRequest, textStatus, errorThrown) {
                        debugger;
                        alert("ok");
                        // 通常 textStatus 和 errorThrown 之中
                        // 只有一个会包含信息
                        // this; // 调用本次AJAX请求时传递的options参数
                    }

第二种是通过参数,来控制,是否调用数据源方法.

后台代码如下:

    protected void Page_Load(object sender, EventArgs e)
    {
        string methor = Request["act"];
        if (!string.IsNullOrEmpty(methor))
        {
            this.GetType().GetMethod(methor).Invoke(this,null);

          
        }
    }

    public void GetVal()
    {
        string val = "getVal 方法获取参数" + Request["arg"];
        Response.Clear();
        Response.Write(val);
        Response.End();
    }

这样也是一种好的数据源调用方法

在前台代码如下:

                var data = http://www.cnblogs.com/incubator/archive/2011/12/09/new Object();
                data.act = "GetVal";
                data.arg = $("#txtVal").val();

                $.post("Default.aspx", data, function (data) { alert(data); });

这是本人一些心得体会,希望大家多多交流,看看还有没有更好的方法来实现写ajax数据源

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Web; 
using System.Web.UI; 
using System.Web.UI.WebControls; 
using System.Web.Services;
public partial class _Default : System.Web.UI.Page 
{     
  protected void Page_Load(object sender, EventArgs e)
  {
    string methor = Request["act"]
    if (!string.IsNullOrEmpty(methor))
    {
      this.GetType().GetMethod(methor).Invoke(this,null);
    }   
  }
  public void GetVal()
  {
    string val = "getVal 方法获取参数" + Request["arg"];
    Response.Clear();
    Response.Write(val);
    Response.End();
   }
  [WebMethod]
  public static string GetWord(string arg)30     
  {
    return "调用 webService,值是"+arg; 
  }
 }

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

苍狼_2001

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值