Java学习者论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

手机号码,快捷登录

恭喜Java学习者论坛(https://www.javaxxz.com)已经为数万Java学习者服务超过8年了!积累会员资料超过10000G+
成为本站VIP会员,下载本站10000G+会员资源,购买链接:点击进入购买VIP会员
JAVA高级面试进阶视频教程Java架构师系统进阶VIP课程

分布式高可用全栈开发微服务教程

Go语言视频零基础入门到精通

Java架构师3期(课件+源码)

Java开发全终端实战租房项目视频教程

SpringBoot2.X入门到高级使用教程

大数据培训第六期全套视频教程

深度学习(CNN RNN GAN)算法原理

Java亿级流量电商系统视频教程

互联网架构师视频教程

年薪50万Spark2.0从入门到精通

年薪50万!人工智能学习路线教程

年薪50万!大数据从入门到精通学习路线年薪50万!机器学习入门到精通视频教程
仿小米商城类app和小程序视频教程深度学习数据分析基础到实战最新黑马javaEE2.1就业课程从 0到JVM实战高手教程 MySQL入门到精通教程
查看: 296|回复: 0

[默认分类] Jquery getJSON方法分析(一)

[复制链接]
  • TA的每日心情
    开心
    2021-12-13 21:45
  • 签到天数: 15 天

    [LV.4]偶尔看看III

    发表于 2018-7-9 17:11:30 | 显示全部楼层 |阅读模式
    准备工作
      
    ·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)
      
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|手机版|Java学习者论坛 ( 声明:本站资料整理自互联网,用于Java学习者交流学习使用,对资料版权不负任何法律责任,若有侵权请及时联系客服屏蔽删除 )

    GMT+8, 2024-6-11 04:30 , Processed in 0.359527 second(s), 46 queries .

    Powered by Discuz! X3.4

    © 2001-2017 Comsenz Inc.

    快速回复 返回顶部 返回列表