深入分析jquery解析json数据


Posted in Javascript onDecember 09, 2014

我们先以解析上例中的comments对象的JSON数据为例,然后再小结jQuery中解析JSON数据的方法。

JSON数据如下,是一个嵌套JSON:

{"comments":[{"content":"很不错嘛","id":1,"nickname":"纳尼"},{"content":"哟西哟西","id":2,"nickname":"小强"}]}

获取JSON数据,在jQuery中有一个简单的方法 $.getJSON() 可以实现。

下面引用的是官方API对$.getJSON()的说明:

jQuery.getJSON( url, [data,] [success(data, textStatus, jqXHR)] )

urlA string containing the URL to which the request is sent.

dataA map or string that is sent to the server with the request.

success(data, textStatus, jqXHR)A callback function that is executed if the request succeeds.

回调函数中接受三个参数,第一个书返回的数据,第二个是状态,第三个是jQuery的XMLHttpRequest,我们只使用到第一个参数。

$.each()是用来在回调函数中解析JSON数据的方法,下面是官方文档:

jQuery.each( collection, callback(indexInArray, valueOfElement) )

collectionThe object or array to iterate over.

callback(indexInArray, valueOfElement)The function that will be executed on every object.

$.each()方法接 受两个参数,第一个是需要遍历的对象集合(JSON对象集合),第二个是用来遍历的方法,这个方法又接受两个参数,第一个是遍历的index,第二个是当 前遍历的值。哈哈,有了$.each()方法JSON的解析就迎刃而解咯。(*^__^*) 嘻嘻……

function loadInfo() {

    $.getJSON("loadInfo", function(data) {

        $("#info").html("");//清空info内容         $.each(data.comments, function(i, item) {

            $("#info").append(

                    "<div>" + item.id + "</div>" + 

                    "<div>" + item.nickname    + "</div>" +                     "<div>" + item.content + "</div><hr/>");

        });

        });

}

正如上面,loadinfo是请求的地址,function(data){...}就是在请求成功后的回调函数,data封装了返回的JSON对象,在下面 的$.each(data.comments,function(i,item){...})方法中data.comments直接到达JSON数据内包 含的JSON数组:

[{"content":"很不错嘛","id":1,"nickname":"纳尼"},{"content":"哟西哟西","id":2,"nickname":"小强"}]

$.each()方法中的function就是对这个数组进行遍历,再通过操作DOM插入到合适的地方的。在遍历的过程中,我们可以很方便的访问当前遍历index(代码中的”i“)和当前遍历的值(代码中的”item“)。

上例的运行结果如下:

如果返回的JSON数据比较复杂,则只需多些$.each()进行遍历即可,嘿嘿。例如如下JSON数据:

{"comments":[{"content":"很不错嘛","id":1,"nickname":"纳尼"},{"content":"哟西哟西","id":2,"nickname":"小强"}],

"content":"你是木头人,哈哈。","infomap":{"性别":"男","职业":"程序员",

"博客":"http:\/\/www.xxx.com\/codeplus\/"},"title":"123木头人"}

js如下:

function loadInfo() {

    $.getJSON("loadInfo", function(data) {

        $("#title").append(data.title+"<hr/>");

        $("#content").append(data.content+"<hr/>");

        //jquery解析map数据

        $.each(data.infomap,function(key,value){

            $("#mapinfo").append(key+"----"+value+"<br/><hr/>");

        });

        //解析数组

        $.each(data.comments, function(i, item) {

            $("#info").append(

                    "<div>" + item.id + "</div>" + 

                    "<div>" + item.nickname    + "</div>" +

                    "<div>" + item.content + "</div><hr/>");

        });

        });

}

值得注意的是,$.each()遍历Map的时候,function()中的参数是key和value,十分方便。

Javascript 相关文章推荐
js面向对象 多种创建对象方法小结
May 21 Javascript
js QQ客服悬浮效果实现代码
Dec 12 Javascript
jQuery中die()方法用法实例
Jan 19 Javascript
script标签属性用type还是language
Jan 21 Javascript
简介JavaScript中getUTCMonth()方法的使用
Jun 10 Javascript
jQuery图片切换动画效果
Feb 28 Javascript
vue.js组件之间传递数据的方法
Jul 10 Javascript
JS实现简单的点赞与踩功能示例
Dec 05 Javascript
elementUI select组件使用及注意事项详解
May 29 Javascript
Vue 权限控制的两种方法(路由验证)
Aug 16 Javascript
javascript实现拖拽碰撞检测
Mar 12 Javascript
微信小程序实现导航栏和内容上下联动功能代码
Jun 29 Javascript
WEB前端设计师常用工具集锦
Dec 09 #Javascript
13 款最热门的 jQuery 图像 360 度旋转插件推荐
Dec 09 #Javascript
JQuery中使用on方法绑定hover事件实例
Dec 09 #Javascript
jQuery实现HTML5 placeholder效果实例
Dec 09 #Javascript
jQuery on方法传递参数示例
Dec 09 #Javascript
jquery实现侧边弹出的垂直导航
Dec 09 #Javascript
基于javascript实现判断移动终端浏览器版本信息
Dec 09 #Javascript
You might like
PHP新手上路(十三)
2006/10/09 PHP
PHP无法访问远程mysql的问题分析及解决
2013/05/16 PHP
解析在PHP中使用mysqli扩展库对mysql的操作
2013/07/03 PHP
浅析php学习的路线图
2013/07/10 PHP
PHP编写RESTful接口
2016/02/23 PHP
如何取得中文输入的真实长度?
2006/06/24 Javascript
jQuery链式操作如何实现以及为什么要用链式操作
2013/01/17 Javascript
JavaScript实现网页对象拖放功能的方法
2015/04/15 Javascript
jQuery EasyUI 入门必看
2016/06/03 Javascript
Highcharts入门之简介
2016/08/02 Javascript
AngularJS 单元测试(二)详解
2016/09/21 Javascript
node.js利用mongoose获取mongodb数据的格式化问题详解
2017/10/06 Javascript
JavaScript实现三级级联特效
2017/11/05 Javascript
Vue开发实现吸顶效果的示例代码
2018/08/21 Javascript
小程序实现左滑删除功能
2018/10/30 Javascript
node.js实现微信开发之获取用户授权
2019/03/18 Javascript
详解JavaScript中的函数、对象
2019/04/01 Javascript
JS document文档的简单操作完整示例
2020/01/13 Javascript
详解Python多线程
2016/11/14 Python
利用Python中SocketServer 实现客户端与服务器间非阻塞通信
2016/12/15 Python
python实现字符串连接的三种方法及其效率、适用场景详解
2017/01/13 Python
python实现类之间的方法互相调用
2018/04/29 Python
完美解决在oj中Python的循环输入问题
2018/06/25 Python
python+opencv实现霍夫变换检测直线
2020/10/23 Python
django框架使用方法详解
2019/07/18 Python
Python re 模块findall() 函数返回值展现方式解析
2019/08/09 Python
python asyncio 协程库的使用
2021/01/21 Python
荷兰之家英文站:Holland at Home
2016/10/26 全球购物
7 For All Mankind官网:美国加州洛杉矶的高级牛仔服装品牌
2018/12/20 全球购物
No7 Beauty美国官网:英国国民护肤品牌
2019/10/31 全球购物
乡镇消防工作实施方案
2014/03/27 职场文书
嘉宾邀请函
2015/01/31 职场文书
2015学校图书管理员工作总结
2015/05/11 职场文书
56句经典英文座右铭
2019/08/09 职场文书
企业内部管理控制:银行存款控制制度范本
2020/01/10 职场文书
MySQL REVOKE实现删除用户权限
2021/06/18 MySQL