【码在江湖】前端少侠的json故事(上)日月第一击
日月第一击
这是我前端生涯第一次和后台对接,其经历真是苦不堪言,多次绝处逢生,柳暗花明,可就是迟迟见不到那条村子。当然,最后我还是完成了这次对接。下面来聊一聊我这白痴一般的经历。

序章
话说天下大势,分久必合,合久必分。2016年,程序员的角色已经有了很大的分化,后端、前端、移动端、算法各领域名家辈出,他们都是各自领域的专家,然而要完成统一天下的大业,非一己之力所能及,需要集各家之所长,方能六国灭秦。
于是,我们就这么组成了规划狮项目组。
那是一个寒冷的夜晚,小女孩在外面卖火柴,后来冻死了(画风不太对-_-#。。)
那天晚上,我对后台樟哥说:“我这边估计差不多了,到时候你怎么把数据传给我去显示啊?”
樟哥语重心长地说:“小伙,我传你一本惊世秘籍——
AJ心经,练完以后,方能完成数据对接。”
听到AJ心经一词,我内心澎湃,心想:卧槽!这什么玩意儿!?
我虚心问道:“敢问樟哥,何为AJ心经?”
樟哥抿嘴一笑,说道:“就是
ajax+json嘛~~”
我们前后端对接的故事就这么发生了:
第一次对接
我先是在
w3school里花15分钟把json看完了。然后再花20分钟把ajax也看完了。
我找樟哥说:“ok了,来吧。”然后他给了我一个地址,这个神奇的地址我当然是忘了,反正显示的内容就是json格式。然后,我尴尬的发现我连获取数据都还没做到。。(我想当然的把下面一条判断语句去掉了)
if(xmlhttp.readyState == 4 && xmlhttp.status == 200)
所以,这天晚上,不熟悉json的我最后没能完成第一次对接。回去得先把json的例子操作一遍。
第二次对接
第二天早上,我们进行了再一次对接,这次对接简直是神一般的对接,不知道为什么这次能获取他发给我的json数据了!(不用问肯定是昨晚自己写错了哪个单词-_-#)
然而,幸福并没有降临在我身上。我仅仅是能获取json的文本数据,并没有解析出来(当然,解析其实也很简单,加个解析函数JSON.parse()就行,然而我当时还在折腾eval()。。不知道为啥行不通。。|~|)
最后,我当然还是把自己折腾到成功了。来放代码展示:
↓这是要操作的json数据
{
"sites": [
{ "name":"dkplus" , "content":"有人要约球吗?下午系办篮球场,不见不散!" },
{ "name":"詹姆斯" , "content":"我想打篮球" },
{ "name":"梅西" , "content":"我想踢球" }
]
}
↓这是js解析json代码
function loadXMLDoc(){
var xmlhttp = new XMLHttpRequest();
xmlhttp.onreadystatechange = function(){
if(xmlhttp.readyState == 4 && xmlhttp.status == 200){
// document.getElementById("text").innerHTML = xmlhttp.responseText;//测试能否获取数据
var data = xmlhttp.responseText;
// alert(data);//测试能否获取数据到对象
var obj = JSON.parse(data);//解析json数据
// alert(obj.sites[0].name);//测试解析是否成功
document.getElementById("h2").innerHTML = obj.sites[0].name;
document.getElementById("content").innerHTML = obj.sites[0].content;
}
}
xmlhttp.open("get","test.json",true);
xmlhttp.send();
}
上面有注释的地方都是我所踩过的坑,测试json的数据传输真的要一步一步来。
先判断是否接收了所有的数据,并输出到一个标签查看这些数据
if(xmlhttp.readyState == 4 && xmlhttp.status == 200)
document.getElementById("text").innerHTML = xmlhttp.responseText;
然后把数据储存到一个对象,看有没有成功
var data = xmlhttp.responseText;
alert(data);
再用JSON.parse()函数解析数据,输出看是否成功
var obj = JSON.parse(data);
alert(obj.sites[0].name);
最后就是动真格的了,把解析的数据填进标签里
document.getElementById("h2").innerHTML = obj.sites[0].name;
document.getElementById("content").innerHTML = obj.sites[0].content;
已经做到这里了,樟哥再一次语重心长对我说了一句话:“……”
卧槽,ng的json解析这么流弊?!
然后我就去搞ng的$http服务那块了。
微信公众号dkplus,由前端少侠dk搭建的分享平台,主攻web前端,但也游离于设计,乐于分享他的代码故事、ps技巧和ppt技巧。码在江湖,身不由己,珍爱生命,简约设计,我是前端,也是设计。博客园:http://www.cnblogs.com/dkplus/
【码在江湖】前端少侠的json故事(上)日月第一击的更多相关文章
- 【码在江湖】前端少侠的json故事(下):jsonp的应用
jsonp的应用 话说天下大势,分久必合,合久必分,代码江湖自进入21世纪以来,前后端分离成为了大势所趋,代码分工更为精细,更为深入,而正所谓码在江湖,身不由己,为了更好的实现需求,程序猿们必须不断学 ...
- 【码在江湖】前端少侠的json故事(中)ng的json
ng的json 正所谓"人在江湖,身不由己",在开发之路上前端少侠dk遇到过种种困难,尤其在与后端进行数据对接的时候,不得不逼迫自己以极快的速度去学习和掌握一些奇招怪式,正当他以为 ...
- 前端少侠的ps故事
前端少侠的ps故事 正所谓,码在江湖,身不由己.自21世纪前后端分离,代码分工细化以来,前端与设计的合作也变得越来越重要.有人说,如果前端懂设计的话,工作会更快一点.倘若说我入前端半年能算半个前端少侠 ...
- 正确的前端传后台json方式
DEMO: var data=JSON.stringify({"page": {"pagenow": 1,"pagesize": 20},& ...
- arguments.callee 调用函数自身用法----JSON.parse()和JSON.stringify()前端js数据转换json格式
arguments.callee 调用函数自身用法 arguments.callee 在哪一个函数中运行,它就代表哪个函数. 一般用在匿名函数中. 在匿名函数中有时会需要自己调用自己,但是由于是匿名函 ...
- SpringMVC 前端获得定义JSON对象的方法
SpringMVC 前端获得定义JSON对象的方法: 可以使用map进行对象的创建,这样就会解析成键值对,不需要为前端专门定义对象.
- java后端无法接收到前端传递的json对象
java后端无法接收到前端传递的json对象 一·可能是因为未使用@RequestBody 在Controller层中,要么使用@RestController要么使用@Controller+@@Req ...
- LocalResizeIMG前端HTML5本地压缩图片上传,兼容移动设备IOS,android
LocalResizeIMG前端HTML5本地压缩图片上传,兼容移动设备IOS,android jincon 发表于 2015-02-26 18:31:01 发表在: php开发 localresiz ...
- 22、JSON/jQuery上
1)掌握JSON及其应用 2)了解jQuery的背景和特点 3)理解js对象和jQuery对象的区别 4)掌握jQuery九类选择器及应用(上) 声明:今天服务端我们使用Struts2技术 一 ...
随机推荐
- Java学习之注解Annotation实现原理
前言: 最近学习了EventBus.BufferKinfe.GreenDao.Retrofit 等优秀开源框架,它们新版本无一另外的都使用到了注解的方式,我们使用在使用的时候也尝到不少好处,基于这种想 ...
- SQL Server-聚焦过滤索引提高查询性能(十)
前言 这一节我们还是继续讲讲索引知识,前面我们讲了聚集索引.非聚集索引以及覆盖索引等,在这其中还有一个过滤索引,通过索引过滤我们也能提高查询性能,简短的内容,深入的理解,Always to revie ...
- MUI 个推获取ClientID的方法
本次是获取个推ClientID的方法 //监听消息开始 document.addEventListener("plus ...
- ubuntu 14.04LTS 环境下配置NFS服务
简言之,NFS(Network FileSystem,网络文件系统)用于在不同机器,不同操作系统之间通过网络互相分享各自的文件.NFS设计之初就是为了在不同的系统间使用,所以它的通讯协议设计与主机及操 ...
- console.log("A"-"B"+"3")=?
(点击上方的订阅号,可快速关注,关注有惊喜哦^_^) 前不久看到一道JS基础题目,做了一下竟然错了一半...在此分享一下: 先把题目放上来,大家可以自己测试一下再看答案哦^_^ ①console.lo ...
- Python(四)装饰器、迭代器&生成器、re正则表达式、字符串格式化
本章内容: 装饰器 迭代器 & 生成器 re 正则表达式 字符串格式化 装饰器 装饰器是一个很著名的设计模式,经常被用于有切面需求的场景,较为经典的有插入日志.性能测试.事务处理等.装饰器是解 ...
- 利用Python进行数据分析(12) pandas基础: 数据合并
pandas 提供了三种主要方法可以对数据进行合并: pandas.merge()方法:数据库风格的合并: pandas.concat()方法:轴向连接,即沿着一条轴将多个对象堆叠到一起: 实例方法c ...
- RabbitMQ原理与相关操作(一)
小编是菜鸟一枚,最近想试试MQ相关的技术,所以自己看了下RabbitMQ官网,试着写下自己的理解与操作的过程. 刚开始的第一篇,原理只介绍 生产者.消费者.队列,至于其他的内容,会在后续中陆续补齐. ...
- WIN7下查看CPU核心数
方法一 WIN+R输入cmd,输入wmic,输入cpu get *(注意空格),找到numberofcores和numberoflogicalprocessors,如下图为双核4线程,真核心数是2,使 ...
- 第二篇 Entity Framework Plus 之 Query Future
从性能的角度出发,能够减少 增,删,改,查,跟数据库打交道次数,肯定是对性能会有所提升的(这里单纯是数据库部分). 今天主要怎样减少Entity Framework查询跟数据库打交道的次数,来提高查询 ...