老話說的好:好記心不如爛筆頭!
本着這原則,我把最近工作中遇到的jquery利用ajax調用web服務的各種資料類型做了一個總結!
本文章沒有什麼高難度技術,就是記錄一下,彙總一下,以便以後需要時檢視!
本總結牽涉的資料類型,主要有:
string,int這樣的基本資料類型
ClassA這樣的自定義類
List<ClassA>這樣的集合類型
Dictionary這樣的字典類型資料
DataSet這樣的表資料類型(這種類型資料,本文提供了3種調用方式)
1.前提:項目運作環境和項目引用
本文代碼全部在vs2010下運作,所有引用如下:
jquery-1.4.1.min.js
jquery.json-2.3.min.js
Newtonsoft.Json.dll
Microsoft.Web.Preview.dll
2.代碼說明
web服務要想被ajax成功調用,請勿忘記标記上屬性:[System.Web.Script.Services.ScriptService]
各種資料類型調用代碼如下:
a.無參數,傳回string
說明:這是一種最基本的調用方式,由于調用資料類型設定為json,是以傳回資料在response.d中
運作結果:
b.有參數,傳回string
說明:由于調用資料類型設定為json,是以傳遞給web服務的參數必須嚴格遵守json字元串格式,否則有可能會出錯
$.toJSON是引用jquery.json-2.3.min.js中的一個方法,它是把一個js類轉化為json字元串
c.傳回數組
說明:由于傳回的是數組,是以利用$.each進行循環逐一取值
d.傳回自定義類
說明:傳回的值在js中也是一個類,是以用其屬性可以通路到值
e.傳回自定義集合類
f.自定義類參數調用,傳回自定義類
說明: 上面例題,我示範了2種參數形成方式,個人喜歡第2種方式,不喜歡那種字元串拼接的方式
g.自定義集合類參數調用,傳回自定義集合類
h.傳回Dictionary
說明:正常情況下,Dictionary Hashtable ListDictionary 這3個類型都不可以在WebService的方法中擔任參數和方法傳回值,沒想到這次jquery竟然調用成功!小小驚喜發現!
特别提示:Dictionary的鍵值必須是字元,否則會報錯
i.傳回DataSet
本文為DataSet示範了3種調用方式
傳回DataSet第1種方式:
說明:這種方式項目中必須引用Microsoft.Web.Preview.dll,并且在Web.config配置檔案中增加如下節點:
傳回DataSet第2種方式:
說明:由于采用的是xml格式調用,是以在傳遞參數時,就采用對象的形式
傳回DataSet第3種方式:
說明:web伺服器端我利用Newtonsoft.Json.dll裡面的JsonConvert.SerializeObject方法把DataSet序列化為json字元串
jquery用戶端我利用 $.evalJSON把傳回的json字元串再轉化為類