• Jquery getJSON方法分析


    转自:http://www.cnblogs.com/jams742003/archive/2009/12/25/1632276.html

    准备工作

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

    博客园大道至简

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

    转载请注明:博客园

  • 相关阅读:
    准备开发一门科学(工程)计算语言
    编译器二次开发定制服务?
    C#中的委托
    asp.net网页代码清理文件夹下面的数据
    类型“System.Web.UI.UpdatePanel”不具有名为“DropDownList”的公共属性,解决方法
    AutoPostBack 与UpdatePanel的局部刷新
    asp.net截取指定字符后面的字符串
    asp.net 各种格式的时间格式
    UpdatePane刷新和Ajax控件Timer的问题,刷新没有效果,解决方法
    ACCESS模糊查询
  • 原文地址:https://www.cnblogs.com/gavin-num1/p/4440766.html
Copyright © 2020-2023  润新知