AJax技术

JSONP的数据格式优化

字号+ 作者:H5之家 来源:H5之家 2017-07-29 08:03 我要评论( )

JSONP的数据格式优化。下面给大家介绍关于JSONP的数据格式优化的一些小技巧,希望对大家有点帮助。 在用JSON传递数据时有一个问题,就是在传递列表时,字段名

下面给大家介绍关于JSONP的数据格式优化的一些小技巧,希望对大家有点帮助。

在用JSON传递数据时有一个问题,就是在传递列表时,字段名过于重复,浪费了带宽,降低了效率。比如:

 代码如下 复制代码

{

    data:[

        {name:”张三”,idcard:””…},

        {name:”李四”,idcard:””…}

    ]

}

数据有多少条,”name”和”idcard”这两个字符串就有多少套,那么是否可以简化一下?

在JSONP模式中只需要给一个方法传入数据,而这个数据不一定是直接的数据变量,在javascript里可以通过自调用匿名函数返回数据,所以可以把这个匿名函数当成入参传给这个方法:

 代码如下 复制代码

SomeFunction(    (function(){return data;})()    );

对于客户端网页来说,只要传入的数据格式正确就可以,至于是数据还是函数返回值并不关注,但是对于服务器端,如果返回函数,就可以做很多事情,而且这些事情客户端是无法拒绝的(因为跨域),其中包括刚才讨论到的数据key冗余问题。

key冗余问题,最容易想到的就是将key抽取出来,在函数自执行的时候再拼回去,所以可以定义两个变量用于存key值和数据,再通过for循环拼装,代码如下:

 

 代码如下 复制代码

(function(){

    var m=[“name”,”idcard”];//用于存key名

    var d=[[“张三”,””],[“李四”,””]];//完全用于储存数据,没有key,没有浪费

    var r={list:[]};//用于返回结果

    for(var i=0;i<d.length;i++){

        r.list.push({});

        for(var j=0;j<m.length;j++){

            r.list[i][m[j]]=d[i][j];

        }

    };//将数据拼装回去

    try{return r;}finally{}//返回客户端要的数据

})();//自执行

如果字段名都很短而且数据条数少的话,就不需要这么麻烦,直接返回数据就可以,当数据量较多,这种方式就比较实用了。

另外,在finally里面可以放额外的代码,比如:

finally{alert(“虽然您访问的是163,但是数据是从baidu来的哦!”)}

显然163对此无能为力:)至于这里面放什么东西就取决于业务需要了。这种格式暂且称之为JSONPM吧(JSONP Metadata extraction)。

 

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

相关文章
  • php+ajax+json的一个最简单实例

    php+ajax+json的一个最简单实例

    2017-07-29 09:00

  • 你可知道外贸网站制作的时候会出现什么问题

    你可知道外贸网站制作的时候会出现什么问题

    2017-07-28 15:00

  • Django Ajax的使用教程

    Django Ajax的使用教程

    2017-07-26 12:00

  • 正则表达式的高级技巧8个常用的概念

    正则表达式的高级技巧8个常用的概念

    2017-07-26 09:05

网友点评