前端必备——js中前端与后台的数据交互全解
只要编程语言能够支持网卡端口的监听和发送,理论上都是可以实现服务器后台设计的。也因此造成了实现后台的语言偏多,而web前端语言以html/css/js为主。所以在这里我们不涉及后台的设计,只介绍在web前端设计中前端数据的发送和后台数据的接收。
纯粹的前端工程师已经不存在了,做前端开发必须要了解必要的后台、数据库知识,以及与后台的交互设计,其中你需要知道的名词包括JSON、AJAX、序列化、推送、comet、SSE、WebSocket。
JSON
js对象
key和value间用冒号连接,不同的key-value键值对之间用逗号连接,最后一个value后不加符号。
json对象
json对象与js对象的对象字面量的区别在于属性必须加引号。
JSON中对象可以嵌套。每个JSON对象使用{}包含。toJSON函数是对象序列化时调用的虚函数。
json数组
JSON数组,每一个元素都是json对象。
json对象操作
json对象与js对象操作方法相同,也是支持属性的增删查改操作。
json数组操作
json数组与js数组操作方法相同
序列化
将js对象、json对象、json数组转化json字符串。
JSON.stringify将对象(js的或JSON的)转化为JSON字符串(称为序列化)。可以序列化对象或对象数组。会自动滤出值为underfined的属性。
JSON.stringify函数第二个参数是过滤器,表示只保留name和age两个属性,也可以以函数作为过滤器。第三个参数是换行缩进,可为数字缩进空格数目,最大缩进为10,可为字符串,表示缩进字符串。
调用stringify,执行顺序:toJSON虚函数或对象本身->函数过滤器->存在属性进行序列化->缩进参数进行格式化。
反序列化
将json字符串转化为json对象、json数组。
JSON.parse将字符串转化为js对象或数组,可以使用函数控制转化操作。
Ajax
Ajax的核心是XmlHttpRequest。我们通过对该对象的操作来进行异步的数据请求。jQuey中使用.ajax,.post等,Angular中使用$http。
创建XHR对象
状态变化事件
onreadystatechange()状态变化函数。readyState的取值0为未初始化,未调用open,1已open未send,2已send未回复,3回复部分,4全部回复。在后台使用推送机制的话,前端会间断的收到推送数据,状态为3。responseText包含曾经的所有推送数据,所以每次读取应该根据旧数据长度查找最新的数据的位置。
响应完成事件
无论什么响应,接收完成就触发。
响应异常事件
进度事件
lengthComputable表示进度信息是否可用,position表示已接收数,totalSize表示预期接收数。
请求初始化
opet()准备启动请求,参数:请求类型post或get,请求地址,是否异步发送。同步的话会等待程序返回方可继续。
发送请求
发送请求,如果是同步,会直到响应完毕才会继续运行。参数:请求主体。xhr.abort()取消异步请求。
获取响应
responseText返回数据,responseXML在响应类型为text/xml和application/xml时返回XML的响应数据。getResponseHeader读取服务器返回在自定义头部信息。statusText表示HTTP状态描述,各浏览器不同。
超时函数
请求数据序列化
FormData对象序列化表单,也可以通过new FormData(),创建空的对象。append添加键值对,可以在包含file的表单中直接添加文件。
comet
Ajax的出现使客户端与服务器端传输数据少了很多,但还是基于http协议,无法摆脱http协议要求的请求/响应的模式。对于某些需要及时更新的推送通知业务,人们便提出了“反向Ajax”。
Comet的实现主要有两种方式,基于Ajax的长轮询(long-polling)方式和基于 Iframe 及 htmlfile 的流(http streaming)方式。而这些大部分功能在后台完成,前端要做的就是通过ajax请求成功后,在XMLHttpRequest的onreadystatechange函数中持续获取数据。
SSE
SSE是一种允许服务端向客户端推送新数据的HTML5技术。与由客户端每隔几秒从服务端轮询拉取新数据相比,这是一种更优的解决方案。
EventSource对象参数为入口点,必须与创建对象的页面同源(url模式,域、端口)。连接断开会自动建立,或者使用source.close()强制断开。open事件在连接建立时触发,message事件在接收到新数据时触发,error事件在无法建立连接时触发。推送数据保存在event.data中。
WebSocket
Websocket是一个全新的、独立的协议,基于TCP协议,与http协议兼容、却不会融入http协议。他被设计出来的目的就是要取代轮询和 Comet 技术。
总结
前端必备——js中前端与后台的数据交互全解的更多相关文章
- aspx 页面中 js 引用与页面后台的数据交互 --【 后台调用 js 】
js 中调用后台方法 一.用Response.Write方法 Response.Write("<script type='text/javascript'>alert(&qu ...
- aspx 页面中 js 引用与页面后台的数据交互 --【 js 调后台】
后台调用 js 方法 前台调用后台方法与变量: 后台被调用的方法必须是public 或 protected 后台被调用的方法必须是静态的static 方法一:通过WebService来实现 步骤: ...
- angularJS中directive父子组件的数据交互
angularJS中directive父子组件的数据交互 1. 使用共享 scope 的时候,可以直接从父 scope 中共享属性.使用隔离 scope 的时候,无法从父 scope 中共享属性.在 ...
- 【前端】js中new和Object.create()的区别
js中new和Object.create()的区别 var Parent = function (id) { this.id = id this.classname = 'Parent' } Pare ...
- 前端之js中的函数
函数 函数就是重复执行的代码片. 函数定义与执行 <script type="text/javascript"> // 函数定义 function ...
- JS中直接调用后台静态方法
这两天在维护一个很久之前的老项目,需要在jsp中增加显示一些新的模块,需要连表查询数据库返回数据 最开始想到的是用ajax,但是由于项目十几年前的老项目(jsp页面都是最原始的拼接组成,没有单独的js ...
- Vue.js中滚动条加载更多数据
本文章参考:http://www.cnblogs.com/ssrsblogs/p/6108423.html 分析:1.需要判断滚动条是否到底部: 需要用到DOM的三个属性值,即scrollTop.cl ...
- angular.js 中同步视图和模型数据双向绑定,$watch $digest $apply 机制
Angular.js 中的特性,双向绑定. 让视图的改变直接反应到数据中,数据的改变又实时的通知到视图,如何做到的? 这要归功于 scope 下面3个重要的方法: $watch $digest $ap ...
- js中的前绑定和后绑定详解
这篇文章详细介绍了js中的前绑定和后绑定,有需要的朋友可以参考一下 其主要意思就是看我有没有用过前绑定,即Dom树中的某些元素在还没有创建出来时,就指定该类型的元素一出生就应该拥有的某些事件.在实际开 ...
随机推荐
- BSGS与exBSGS学习笔记
\(BSGS\)用于解决这样一类问题: 求解\(A^x ≡B(modP)\)的最小\(x\),其中\(P\)为质数. 这里我们采用分块的方法,把\(x\)分解为\(i *t-b\)(其中\(t\)是分 ...
- (贪心 线段不相交问题)codeVs 1214 线段覆盖
题目描述 Description 给定x轴上的N(0<N<100)条线段,每个线段由它的二个端点a_I和b_I确定,I=1,2,……N.这些坐标都是区间(-999,999)的整数.有些线段 ...
- 关键字(8):数据库记录的增删查改insert,delete,select,update
insert:一般只要参数个数和类型没问题,不会插入异常 INSERT INTO t_pos_dynamic_map(autoid, lt_termno, lt_merchno) VALUES(SEQ ...
- 图形设计必备软件:CorelDRAW
[CorelDRAW 激发创意] CorelDRAW Graphics Suite 是一款领先的图形设计软件,收到数百万专业人士.小型企业主以及全球设计爱好者的热捧.它可以提供无缝的图形.版面.插图. ...
- eclipse新建maven项目默认jre为1.5的问题
在maven的settings.xml中添加如下内容解决 <profiles> <profile> <id>jdk-1.8</id> <activ ...
- sql server开发工具
查询分析器的使用 SQL语言包含四个部分: 1.数据定义语言(DDL) : 例如 create, drop, alter等语句 2.数据操作语言(DML) : 例如 insert,delete, up ...
- Event Recommendation Engine Challenge分步解析第六步
一.请知晓 本文是基于: Event Recommendation Engine Challenge分步解析第一步 Event Recommendation Engine Challenge分步解析第 ...
- samba服务器之无认证进入共享目录
修改设备中的/log/samba/lib/smb.conf文件 security = share [web] ...
- SonarQube(代码质量管理)配置与使用
继 Sonarqube(代码质量管理)环境搭建,交大家如何配置与使用Sonarqube 1: 汉化Sonarqube: 找到 Setting --> Update Center --> A ...
- Kafka技术内幕 读书笔记之(六) 存储层——服务端处理读写请求、分区与副本
如下图中分区到 日 志的虚线表示 : 业务逻辑层的一个分区对应物理存储层的一个日志 . 消息集到数据文件的虚线表示 : 客户端发送的消息集最终会写入日志分段对应的数据文件,存储到Kafka的消息代理节 ...