深入分析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中格式化日期时间型数据函数代码
Nov 08 Javascript
拥抱模块化的JavaScript
Mar 07 Javascript
关于jQuery新的事件绑定机制on()的使用技巧
Apr 26 Javascript
关于js遍历表格的实例
Jul 10 Javascript
jQuery EasyUI 菜单与按钮之创建简单的菜单和链接按钮
Nov 18 Javascript
JavaScript实现点击按钮直接打印
Jan 06 Javascript
Bootstrap下拉菜单效果实例代码分享
Jun 30 Javascript
原生JavaScript实现Tooltip浮动提示框特效
Mar 07 Javascript
Js实现京东无延迟菜单效果实例(demo)
Jun 02 Javascript
jQuery实现的简单手风琴效果示例
Aug 29 jQuery
微信小程序地图(map)组件点击(tap)获取经纬度的方法
Jan 10 Javascript
小程序组件之自定义顶部导航实例
Jun 12 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中计算字符串相似度的函数代码
2012/12/29 PHP
php操作MongoDB基础教程(连接、新增、修改、删除、查询)
2014/03/25 PHP
php目录遍历函数opendir用法实例
2014/11/20 PHP
浅谈thinkphp的实例化模型
2015/01/04 PHP
UPUPW 更新 64 位 Apache 系列 PHP 7.0 正式版
2015/12/08 PHP
Thinkphp 在api开发中异常返回依然是html的解决方式
2019/10/16 PHP
分享几个超级震憾的图片特效
2012/01/08 Javascript
各浏览器中querySelector和querySelectorAll的实现差异分析
2012/05/23 Javascript
基于jquery自己写tab滑动门(通用版)
2012/10/30 Javascript
JS通过相同的name进行表格求和代码
2013/08/18 Javascript
javascript中setTimeout的问题解决方法
2014/05/08 Javascript
使用JS获取当前地理位置方法汇总
2014/12/18 Javascript
JavaScript实现列表分页功能特效
2015/05/15 Javascript
基于JS代码实现图片在页面中旋转效果
2016/06/16 Javascript
AngularJs定制样式插入到ueditor中的问题小结
2016/08/01 Javascript
js 能实现监听F5页面刷新子iframe 而父页面不刷新的方法
2016/11/09 Javascript
canvas的神奇用法
2017/02/03 Javascript
JS简单实现自定义右键菜单实例
2017/05/31 Javascript
JavaScript调试之console.log调试的一个小技巧分享
2017/08/07 Javascript
ReactNative Image组件使用详解
2017/08/07 Javascript
Vuejs在v-for中,利用index来对第一项添加class的方法
2018/03/03 Javascript
vue组件从开发到发布的实现步骤
2018/11/11 Javascript
Python 操作文件的基本方法总结
2017/08/10 Python
python实现QQ空间自动点赞功能
2019/04/09 Python
Python 等分切分数据及规则命名的实例代码
2019/08/16 Python
python实现连续变量最优分箱详解--CART算法
2019/11/22 Python
解决HTML5中滚动到底部的事件问题
2019/08/22 HTML / CSS
公务员群众路线专题民主生活会发言材料
2014/09/17 职场文书
自查自纠工作总结
2014/10/15 职场文书
本科毕业论文导师评语
2014/12/31 职场文书
劳资员岗位职责
2015/02/13 职场文书
商务代表岗位职责
2015/02/15 职场文书
客服专员岗位职责范本
2015/04/07 职场文书
部门2015年度工作总结
2015/04/29 职场文书
领导干部学习三严三实心得体会
2016/01/05 职场文书