Jquery getJSON方法分析(一)

简介: 准备工作 ·Customer类 public class Customer{    public int Unid { get; set; }    public string CustomerName { get; set; }    public string Memo { get...

准备工作

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

 

结果:

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

 

结果:

Unid1
CustomerName
:宋江
Memo
:天魁星
Other
:黑三郎
Unid
2
CustomerName
:吴用
Memo
:天机星
Other
:智多星

 

这里用了嵌套循环,第一个循环用于从List中遍历Customer对象,第二个循环用于从Customer对象中遍历Customer对象的属性,也就是k/v对。

关于序列化与反序列化请见其它随笔(JSON)

博客园大道至简

http://www.cnblogs.com/jams742003/

转载请注明:博客园

目录
相关文章
|
JavaScript 前端开发
jquery中有.post,.get,$.getJSON为什么没postJSON
jquery中有.post,.get,$.getJSON为什么没postJSON
|
JavaScript 前端开发 网络安全
一个s让我花费了一两个小时 jquery 中$.ajaxSetup({async:false}); 同步不生效的问题getJSON
一个s让我花费了一两个小时 jquery 中$.ajaxSetup({async:false}); 同步不生效的问题getJSON
226 0
|
JavaScript
Jquery $.getJSON()设置同步
如下: $.ajaxSettings.async = false; $.getJSON('/AjaxSwitchDynamicInfo/GetPortUsedCount.cspx', { switchId: id, portName: obj[i].
1036 0
|
Web App开发 XML JavaScript
jQuery $.get $.post $.getJSON 详解【转发】
When Ajax meets jQuery 基于AJAX的应用现在越来越多,而对于前台开发人员来说,直接和底层的HTTPRequest打交道又不是一件令人愉快的事情。jQuery既然封装了 JavaScript,肯定已经考虑过AJAX应用的问题。
1367 0
|
Web App开发 缓存 前端开发
jQuery.getJSON的缓存问题的解决办法
今天做测试工作,发现了一个令我费解的问题,jquery的getJson方法在firefox上运行可以得到返回的结果,但是在ie8上测试,竟发现没有发送请求,故不能取到任何返回的结果,经历了一翻周折,找到了百度空间http://hi.baidu.com/fengluolyn/blog/item/0ac6b7130d8985ddf7039e83.html上的解决办法,便摘抄了下来…… 1 让每次调用的url都不一样方法:在参数中加一个随机数。
1046 0
|
Web App开发 JSON JavaScript
Jquery getJSON方法分析(二)
getJSON与aspx 准备工作 ·Customer类 public class Customer{    public int Unid { get; set; }    public string CustomerName { get; set; }    public str...
926 0