啥叫異步,啥叫Ajax.咱不談啥XMLHTTPRequest.通俗講異步就是前台頁面javascript能調用背景方法.這樣就達到了無重新整理.所謂的Ajax.這裡我們講二種方法
方法一:(微軟有自帶Ajax架構)
在Asp.net裡微軟有自己的Ajax架構.就是在頁面背景.cs檔案裡引入 using System.Web.Services 空間 然後定義靜态方法(方法前加上 [WebMethod])
[WebMethod]
public static string ABC(string ABC)
{
return ABC;
}
好了,現在我們談談前台Js怎麼處理背景傳回的資料吧,可利用Jquery處理傳回的純html,json,Xml等資料.這裡我們示範傳回傳回的資料有string、集合(List<>)、類.
但都傳回Json格式(Json輕量級比XML處理起來簡單).看看前台是怎麼解析這些資料的.
代碼如下:
前台頁面:
背景.cs檔案
利用Jquery讓傳回的各類資料(string、集合(List<>)、類)以Json資料格式傳回,為什麼要用到result.d
這裡我們順帶講下Json
Json簡單講就是Javascript對象或數組.
Json形式一: javascript對象 { "firstName": "Brett", "lastName":"McLaughlin", "email": "aaaa" }
Json形式二: javascript數組 [{ "firstName": "Brett", "lastName":"McLaughlin", "email": "aaaa" },
{ "firstName": "Jason", "lastName":"Hunterwang", "email": "bbbb"}]
當然javascript 數組和對象可以互相嵌套.如形式一中的"Brett"可以換成一個Js數組或Js對象.那微軟的Ajax傳回的是哪種形式呢.是第一種.
微軟架構預設傳回一個 { "d": "背景傳回的資料" } 這裡我們用以上示例中的測試到得比如
如上例的傳回的是string類型的話Firefox調試如下
當傳回的是List<>類型的話FireFox調試如下
傳回的資料也是放在Js對象中的d屬性裡面 是以說這就是為什麼我們老是用result.d來取微軟的架構傳回的資料.
方法一不常用.一般用得多的還是方法二.
方法二:(建一個一般處理程式即.ashx檔案)
用這種方法一般是我們要在ashx檔案裡手動寫好傳回的Json格式的資料傳回給前台用
ashx 你可以配成Json格式一或Json格式二
Default.aspx頁面Js代碼如下
Handler.ashx 代碼如下
以上基本上就第二種方法,可能有人不喜歡拼字元串.那有什麼好辦法呢?答案是有.微軟對Json有很好的支援.
拿上例子說我們隻要把Handler.ashx改一下就可以了
ASP.Net中的JavaScriptSerializer為我們提供了很好的方法
jss.Serialize(drow) 是把drow的Dictionary<string, int> (鍵和值的集合)資料類型轉換成Json資料格式
調試結果如下圖 (上面例子是輸出了一個鍵值多集合即一個Json形式一的Js對象)
如果要輸出Json形式二(Js數組)呢? 我們也隻要改動一部分就了
調試結果如下圖 (上面例子是輸出了Json形式二的Js數組)
講到這裡基本概念也講得差不多了. 這裡再講一個夠常碰到的例子就是如何把DataTabel轉換成Json格式進而好讓前台頁面調用.
就是在Handler.ashx寫上一個方法
其實也有把Json格式轉換成DataTabel格式,方法如下
我們讓傳回的Json以表格的形式顯示出來
那麼前台頁面JS如下
由上例子 再講兩個Js知識點
1. 之前我們取Json裡面的資料如果是傳回的是數組的話是用data[i].name也可表示為data[i]["name"]
2. 如果要通路Js對象的所有屬性那麼周遊Js對象.
也有把前台Json資料傳到背景後解析成DataTabel
本文轉自 夢在旅途 部落格園部落格,原文連結:http://www.cnblogs.com/zuowj/archive/2013/01/06/2848370.html ,如需轉載請自行聯系原作者