.net ajax 异步调用的几种实现方法(jquery)



.net ajax 异步调用的几种实现方法(jquery)

(1).aspx 普通web窗体页。

删除aspx页面中 html代码,只保留第一行。在后置代码页 .aspx.cs 中写对应的方法代码。

前台调用:

    // 异步调用页面url,参数组,返回执行事件
    $.post("AjaxPage.aspx" , { type:'getData01' },function(re){
        $('#re_method01').html(re);
    });


(2)单独.aspx 页(新建的时候不勾选 “将代码放在单独的文件中”) + 任意.cs文件(需要继承System.Web.UI.Page)

 .aspx文件中代码 <%@ Page Inherits="命名空间.类" %>

(3).ashx页面

这里主要知识点就是继承了IHttpHandler接口。来实现Http web相关的事件处理。
实现方法:新建后注销掉context.Response.Write("Hello World");改为你的事件处理代码即可。


1,2,3的前台ajax调用方法都一样。如果需要区分不同的ajax调用。我们可以传递一个不同值的 type 参数。后台再通过switch执行各自的处理程序。


(4)利用System.Web.Services.WebMethodAttribute。

在(1)的基础上引用命名空间using System.Web.Services;然后在需要异步执行的方法上添加[WebMethod]属性。

复制代码
    [WebMethod]
    public static string HandleEvent01(string para,string para2)
    {
        //code...
        return "YOUR DATA";
    }
复制代码



前台调用代码:

复制代码
    $.ajax({                    
        type: "POST", 
        contentType: "application/json",                     
        url: "AjaxWebService.aspx/HandleEvent01", //调用WebService的地址和方法名称组合 ---- WsURL/方法名                    
        data: "{'para':'bill','para2':'28'}",  //这里是要传递的参数,注意参数名跟后台方法参数名的对应
        dataType: 'json',   //WebService 返回Json类型 或者 Json/string                   
        success: function(re) {     
         $('#re_method04').html(re.d);  
    }               
    });
复制代码


可返回json或者string.返回的数据格式为 {"d":你的数据}。这也是为什么我们前台取值的时候会是re.d。

通常我们返回的数据类型可以为,普通字符串,自定义对象,泛型列表,我们看看返回不同类型数据时前端json数据的格式。

后台代码:

复制代码
    [WebMethod]
    public static string HandleEvent01()
    {
        //code...
        return "some words";
    }

    [WebMethod]
    public static Person AjaxMethodThree(string para)
    {
        return new Person { Name = "bill", Country = "China", Favor = new string[] { "Box", "Music", "Football" } };
    }

    [WebMethod]
    public static List<Person> AjaxMethodTwo(string para)
    {
        List<Person> personlist = new List<Person>();
        personlist.Add(new Person { Name = "bill", Country = "China", Favor = new string[] { "Box1", "Film1", "Football1" } });
        personlist.Add(new Person { Name = "tom", Country = "USA", Favor = new string[] { "Box2", "Music2", "Football2" } });
        personlist.Add(new Person { Name = "lucy", Country = "Korea", Favor = new string[] { "Box3", "Music3", "Football3" } });
        return personlist;
    }

    //定义一个Person对象
    public class Person
    {
        public string Name { get; set; }
        public string Country { get; set; }
        public string[] Favor { get; set; }
    }
复制代码


1.返回字符串
json:{"d":"字符串"}
2.返回类型为自定义对象, 前端返回值为一个对应的JSON对象
json:{"d":{"name1":"value1","name2":"value2"...}}

3,返回类型为泛型列表, 前端返回值为对应的JSON对象数组。


如果我们异步就是需要返回json格式数据,这样就很方便。同时,除了以WebService的方式被调用,这个页面也可以以普通URL的方式来异步访问,也就是(1)的情况。


(5)调用WebService

添加web 服务。会生成一个WebServicexxx.asmx以及WebServicexxx.cs.异步程序在WebServicexxx.cs中实现,基本跟(4)差不多。

 

(6)MVC中的ajax异步实现

1.直接在控制器中写public string Ajax(){return "re";}方法,不用额外建视图文件。
2.或者你要返回的内容结构还比较复杂,新建一个_Ajax.cshtml分部视图。控制器中代码:

        public ActionResult Ajax()
        {
     //...your code...
            return PartialView("_Ajax");
        }


前台调用代码:

    $.post("/控制器名/ajax" , { type:'getData01' },function(re){
        $('#re_method01').html(re);
    });



上面的代码整理到了一个项目里  代码下载


原文地址:http://www.cnblogs.com/xiaogang-self/archive/2012/04/06/2434210.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值