天天看點

Jquery ajax 傳回string類型加result.d原因

啥叫異步,啥叫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  ,如需轉載請自行聯系原作者

繼續閱讀