.net ajax 非同步呼叫的幾種實現方法(jquery)

來源:互聯網
上載者:User

介紹幾種.NET中ajax非同步呼叫的不同實現方式

 

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

上面的代碼整理到了一個項目裡  代碼下載

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.