日月第一击

这是我前端生涯第一次和后台对接,其经历真是苦不堪言,多次绝处逢生,柳暗花明,可就是迟迟见不到那条村子。当然,最后我还是完成了这次对接。下面来聊一聊我这白痴一般的经历。

序章

话说天下大势,分久必合,合久必分。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故事(上)日月第一击的更多相关文章

  1. 【码在江湖】前端少侠的json故事(下):jsonp的应用

    jsonp的应用 话说天下大势,分久必合,合久必分,代码江湖自进入21世纪以来,前后端分离成为了大势所趋,代码分工更为精细,更为深入,而正所谓码在江湖,身不由己,为了更好的实现需求,程序猿们必须不断学 ...

  2. 【码在江湖】前端少侠的json故事(中)ng的json

    ng的json 正所谓"人在江湖,身不由己",在开发之路上前端少侠dk遇到过种种困难,尤其在与后端进行数据对接的时候,不得不逼迫自己以极快的速度去学习和掌握一些奇招怪式,正当他以为 ...

  3. 前端少侠的ps故事

    前端少侠的ps故事 正所谓,码在江湖,身不由己.自21世纪前后端分离,代码分工细化以来,前端与设计的合作也变得越来越重要.有人说,如果前端懂设计的话,工作会更快一点.倘若说我入前端半年能算半个前端少侠 ...

  4. 正确的前端传后台json方式

    DEMO: var data=JSON.stringify({"page": {"pagenow": 1,"pagesize": 20},& ...

  5. arguments.callee 调用函数自身用法----JSON.parse()和JSON.stringify()前端js数据转换json格式

    arguments.callee 调用函数自身用法 arguments.callee 在哪一个函数中运行,它就代表哪个函数. 一般用在匿名函数中. 在匿名函数中有时会需要自己调用自己,但是由于是匿名函 ...

  6. SpringMVC 前端获得定义JSON对象的方法

    SpringMVC 前端获得定义JSON对象的方法: 可以使用map进行对象的创建,这样就会解析成键值对,不需要为前端专门定义对象.

  7. java后端无法接收到前端传递的json对象

    java后端无法接收到前端传递的json对象 一·可能是因为未使用@RequestBody 在Controller层中,要么使用@RestController要么使用@Controller+@@Req ...

  8. LocalResizeIMG前端HTML5本地压缩图片上传,兼容移动设备IOS,android

    LocalResizeIMG前端HTML5本地压缩图片上传,兼容移动设备IOS,android jincon 发表于 2015-02-26 18:31:01 发表在: php开发 localresiz ...

  9. 22、JSON/jQuery上

      1)掌握JSON及其应用 2)了解jQuery的背景和特点 3)理解js对象和jQuery对象的区别 4)掌握jQuery九类选择器及应用(上)   声明:今天服务端我们使用Struts2技术 一 ...

随机推荐

  1. MVC 验证码实现( 简易版)

    现在网站上越来越多的验证码,使用场景也是越来越多,登陆.注册.上传.下载...等等地方,都有可能大量使用到验证码,那么制作验证码到底有多简单呢?我们一起来看下最简易版的验证码实现过程- 验证码的基本步 ...

  2. ES6之块级作用域

    一.前言 在ECMAScript6(以下简称ES6)之前,ECMAScript的作用域只有两种: 1.  全局作用域: 2.  函数作用域. 正是因为有这两种作用域,所以在JavaScript中出现一 ...

  3. 读书笔记--SQL必知必会07--创建计算字段

    7.1 计算字段 字段(field),基本与列(column)含义相同. 利用计算字段可以直接从数据库中检索出转换.计算或格式化过的数据. 计算字段不实际存在于数据库表中,是运行时在SELECT语句内 ...

  4. 读书笔记--SQL必知必会16--更新和删除数据

    16.1 更新数据 使用UPDATE语句更新或修改表中的数据.必须有足够的安全权限. 更新表中的特定行 更新表中的所有行 使用UPDATE时一定要细心,不要省略WHERE子句. SET命令用来将新值赋 ...

  5. Python(八)进程、线程、协程篇

    本章内容: 线程(线程锁.threading.Event.queue 队列.生产者消费者模型.自定义线程池) 进程(数据共享.进程池) 协程 线程 Threading用于提供线程相关的操作.线程是应用 ...

  6. ASP.NET 截获服务器生成的将要发送到客户端的html的方法

    有时候我们需要在将服务器端生成的html发送带客户端之前对这些html进行操作,比如生成静态html加之保存.改变生成的html中的某些内容等等,那么久可以通过如下的方案解决. 我总结了两种方式,个人 ...

  7. 学习javascript数据结构(二)——链表

    前言 人生总是直向前行走,从不留下什么. 原文地址:学习javascript数据结构(二)--链表 博主博客地址:Damonare的个人博客 正文 链表简介 上一篇博客-学习javascript数据结 ...

  8. wpf 列表、菜单 收起与展开,通过Grid DoubleAnimation或者Expander实现

    菜单收缩有很多种方法具体如何实现还是看个人想法: 第一种通过后台控制收起与展开: 效果图: 代码 : <Grid> <Grid.ColumnDefinitions> <C ...

  9. jquery在线扫雷

    <扫雷>是一款大众类的益智小游戏,于1992年发行.游戏目标是在最短的时间内根据点击格子出现的数字找出所有非雷格子,同时避免踩雷. 在线试玩 http://hovertree.com/te ...

  10. 第三篇 Entity Framework Plus 之 Query Cache

    离上一篇博客,快一周,工作太忙,只能利用休息日来写一些跟大家分享,Entity Framework Plus 组件系列文章,之前已经写过两篇 第一篇 Entity Framework Plus 之 A ...