javascript
Jquery getJSON方法分析(一)
準備工作
·Customer類
public?class?Customer
{
????public?int?Unid?{?get;?set;?}
????public?string?CustomerName?{?get;?set;?}
????public?string?Memo?{?get;?set;?}
????public?string?Other?{?get;?set;?}
}
?
·服務端處理(Json_1.ashx)
Customer?customer?=?new?Customer?
??????{?Unid=1,CustomerName="宋江",Memo="天魁星",Other="黑三郎"};
string?strJson?=?Newtonsoft.Json.JsonConvert.SerializeObject(customer);
context.Response.Write(strJson);
?
(一)Jquery. getJSON
方法定義:jQuery.getJSON( url, data, callback )
通過get請求得到json數據
·url用于提供json數據的地址頁
·data(Optional)用于傳送到服務器的鍵值對
·callback(Optional)回調函數,json數據請求成功后的處理函數
function(data,?textStatus)?{
????????//?data是一個json對象
????????//?textStatus?will?be?"success"
???????this;?//?the?options?for?this?ajax?request
}
?
(1)一個對象
$.getJSON(
????"webdata/Json_1.ashx",
????function(data)?{
???????$("#divmessage").text(data.CustomerName);
????}
);
?
向Json_1.ashx地址請求json數據,接收到數據后,在function中處理data數據。 這里的data的數據是一條記錄,對應于一個customer實例,其中的數據以k/v形式存在。即以[object,object]數組形式存在。
{"Unid":1,"CustomerName":"宋江","Memo":"天魁星","Other":"黑三郎"}
所以在訪問時,以data.Property來訪問,下面以k/v循環來打印這條宋江的記錄:
$.getJSON(
????"webdata/Json_1.ashx",
????function(data)?{
????????var?tt="";
????????$.each(data,?function(k,?v)?{
????????????tt?+=?k?+?":"?+?v?+?"<br/>";
????????})
????????$("#divmessage").html(tt);
});
?
結果:
Unid:1
CustomerName:宋江
Memo:天魁星
Other:黑三郎
(2)對象數組
Ashx文件(Json_1.ashx)修改:
List<Customer>?_list?=?new?List<Customer>();?Customer?customer?=?new?Customer?
???????{?Unid=1,CustomerName="宋江",Memo="天魁星",Other="黑三郎"};
Customer?customer2?=?new?Customer?
???????{?Unid?=?2,?CustomerName?=?"吳用",?Memo?=?"天機星",?Other?=?"智多星"?};
_list.Add(customer);
_list.Add(customer2);
string?strJson?=?Newtonsoft.Json.JsonConvert.SerializeObject(_list);
?
它生成的json對象的字符串是:
[{"Unid":1,"CustomerName":"宋江","Memo":"天魁星","Other":"黑三郎"},
{"Unid":2,"CustomerName":"吳用","Memo":"天機星","Other":"智多星"}]
這里可以看到做為集合的json對象不是再一條記錄,而是2條記錄,是一個[[object,object]]數組:[object,object][object,object],而每個[object,object]表示一條記錄,對應一個Customer,其實也是k/v的形式,而這個v就是一個Customer對象,而這個k是從0開始的索引。
$.getJSON(
????"webdata/Json_1.ashx",
????function(data)?{
????????$.each(data,?function(k,?v)?{
????????????alert(k);
????????});
});
?
這時,k值為0,1……
列表json對象的方法:
$.getJSON(
????"webdata/Json_1.ashx",
????function(data)?{
????????var?tt?=?"";
????????$.each(data,?function(k,?v)?{
????????????$.each(v,function(kk,?vv)?{
????????????????tt?+=?kk?+?":"?+?vv?+?"<br/>";
????????????});
????????});
????????$("#divmessage").html(tt);
});
?
結果:
Unid:1
CustomerName:宋江
Memo:天魁星
Other:黑三郎
Unid:2
CustomerName:吳用
Memo:天機星
Other:智多星
?
這里用了嵌套循環,第一個循環用于從List中遍歷Customer對象,第二個循環用于從Customer對象中遍歷Customer對象的屬性,也就是k/v對。
關于序列化與反序列化請見其它隨筆(JSON)
總結
以上是生活随笔為你收集整理的Jquery getJSON方法分析(一)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 功能区域分析--如何将业务架构转化成为I
- 下一篇: javascript天然的迭代器