通过使用getJSON异步获取json数据文件并绑定事件处理函数

1、json数据的格式

      1. “名称/值”对的集合(A collection of name/value pairs)。不同的语言中,它被理解为对象(object),记录(record),结构(struct),字典(dictionary),哈希表(hash table),有键列表(keyed list),或者关联数组 (associative array)。

      2. 值的有序列表(An ordered list of values)。在大部分语言中,它被理解为数组(array)。

      

      下面我来举几个例子:

           对于这种构造方式的理解,它的优势在于可读性非常强,可以直观地看出具体的数据属性值是属于哪个部分属性比如:

           

           在“名称/值”中:{ "firstName": "xiaohong" },这样很明显可以看出 firstName 的属性是 Brett,当然,这样做实际上比等效的纯文本 "名称 / 值对" 占用更多的空间:firstName=xiaohong。但是,如果是多个“名称/值”串接在一起的话就能够彰显出它的优势啦!如下所述:

           { "firstName": "xiaohong", "lastName":"xiaoming", "email": "www.email.com" }

          

           

           在这种记录表中最好的设计方式就是能够让程序员一目了然地看出哪个数据是属于谁的,除此之外还要减少复杂程度,这样操作起来也就方便一些,就比如操作一张数组性质表:

           

           { 

                    [

                            { "firstName": "xiaohong", "lastName":"xiaoming", "email": "www.email.com" },

                            { "firstName": "xiaohong", "lastName":"xiaoming", "email": "www.email.com"},

                            { "firstName": "xiaohong", "lastName":"xiaoming", "email": "www.email.com" }

                    ]

            }  这样就非常地直观方便。

           

            上面我们看到只是一个变量people的数据表,除了这个我们还可以进行存储多个变量的数据表,方法跟上述过程一样,如下:

             

           {

              "people": 

                                       [

                                             { "firstName": "xiaohong", "lastName":"xiaoming", "email": "www.email.com" },

                                             { "firstName": "xiaohong", "lastName":"xiaoming", "email": "www.email.com"},

                                             { "firstName": "xiaohong", "lastName":"xiaoming", "email": "www.email.com" }

                                       ],

               "man": 

                                       [                     

                                             { "firstName": "xiaohong", "lastName":"xiaoming", "email": "www.email.com" },

                                             { "firstName": "xiaohong", "lastName":"xiaoming", "email": "www.email.com"},

                                             { "firstName": "xiaohong", "lastName":"xiaoming", "email": "www.email.com" }

                                       ],

              "woman": [

                                             { "firstName": "xiaohong", "lastName":"xiaoming", "email": "www.email.com"},

                                             { "firstName": "xiaohong", "lastName":"xiaoming", "email": "www.email.com" }

                                 ]

           }

           以上就是关于json数据的存储格式


2、getJSON异步获取json数据

         我们在实际应用中一般获取的json数据是由一个变量组成的数组或者是多个变量组成的数组,所以我针对这两种数组给大家提供具体的获取步骤。

       1、一个变量

         假设有一个名叫downloadMessages.json的文件等待读取

        $.getJSON("downloadMessages.json", function (data) {
             var strHTML = "";//初始化保存内容变量
             $.each(data, function (infoIndex, info) {
             strHTML += "<tr>" +
             "<td>" + info["fileName"] + "</td>" +
             "<td>" + info["sendAuthor"] + "</td>" +
             "<td>" + info["email"] + "</td>" +
             "</tr>"; 
             }) $("#show-download-table").append(strHTML); 
        });


 

         使用each遍历data之后将strHTML缓存的数据追加到标签#show-download-table中去。这样我就实现了单个变量的json文件异步获取。

   2、多个变量

       假设有一个名叫workermember.json的文件等待读取

       $.getJSON("workermember.json", function (data) {
            var strHTML = "";
            for (var countryObj in data) {
                for (var cityObj in data[countryObj]) {
                     strHTML = "";
                     strHTML += "<tr>" +
                                "<td>" +
                                      data[countryObj][cityObj].fileName+
                                "</td>"+
                                "<td>" +
                                      data[countryObj][cityObj].sendAuthor+
                                "</td>" +
                                "<td>" +
                                      data[countryObj][cityObj].email+
                                "</td>" +
                          "</tr>"; 
                }$("#show-download-table").append(strHTML);
            }
        }

              使用两个for循环遍历data之后将strHTML缓存的数据追加到标签#show-download-table中去。这样我就实现了多个变量的json文件异步获取。


3、绑定事件处理函数

 这种异步获取的数据如果通过click进行事件的处理那是根本行不通,我已经试验过,所以,为了能够正常的处理操作异步获取的数据,我们采用jQuery.on()来实现,具体的操作和click没有很大的差别。实例代码如下:

     $("#box .box-ul li").on("click", function (event) {
          var index = $("#box .box-ul li").index(this);
          $(this).addClass("active").siblings().removeClass("active");
          $("#box div").eq(index).addClass("select").siblings().removeClass("select");
     });


     关于使用getJSON获取json数据的具体案例代码在这里就不给大家展示了,可以看看大神们的案例代码:http://www.jb51.net/article/36678.htm




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值