关于JSONP
2016-05-13 10:01
344 查看
1. JSON(JavaScript Object Notation)和JSONP(JSON with Padding)
JSON是一种数据交换格式。
JSONP是一种非官方跨域数据交互协议。
2. 关于JSON
2.1 JSON的优点:
基于纯文本,跨平台传递极其简单;
Javascript原生支持,后台语言几乎全部支持;
轻量级数据格式,占用字符数量极少,特别适合互联网传递;
可读性较强,虽然比不上XML那么一目了然,但在合理的依次缩进之后还是很容易识别的;
容易编写和解析,当然前提是你要知道数据结构;
2.2 JSON的缺点:
JSON在服务端语言的支持不像XML那么广泛,不过JSON.org上提供很多语言的库。
如果你使用eval()来解析的话,会容易出现安全问题。
2.3 JSON的格式:
JSON只有两种数据类型描述符,大括号{}和方括号[],其余英文冒号:是映射符,英文逗号,是分隔符,英文双引号""是定义符。
大括号{}用来描述一组“不同类型的无序键值对集合”(每个键值对可以理解为OOP的属性描述),方括号[]用来描述一组“相同类型的有序数据集合”(可对应OOP的数组)。
上述两种集合中若有多个子项,则通过英文逗号,进行分隔。
键值对以英文冒号:进行分隔,并且建议键名都加上英文双引号”",以便于不同语言的解析。
JSON内部常用数据类型有字符串、数字、布尔、日期、null 这几个,字符串必须用双引号引起来,其余的都不用,建议把日期时间直接作为字符串传递。
3 JSONP
3.1 跨域请求
基于浏览器的安全策略,不允许脚本的跨域请求。因此AJAX仅限于同域请求。
3.2 解决跨域请求
常见的跨域请求方案:ActiveX控件、服务端代理、Websocket、JSONP
ActiveX控件需要安装(安装量最广的FlashPlayer则不被iOS支持)
服务端代理,扩展,通用性不高。
Websocket需浏览器和服务端支持。
JSONP则仅需服务器端代码实现支持。
3.3 JSONP实现流程
客户端:处理函数定义function handler = function( data ){ }
客户端:请求。url?callback=handler
服务器端:返回 handler( returndata );
客户端:执行handler(returndata);
JSON是一种数据交换格式。
JSONP是一种非官方跨域数据交互协议。
2. 关于JSON
2.1 JSON的优点:
基于纯文本,跨平台传递极其简单;
Javascript原生支持,后台语言几乎全部支持;
轻量级数据格式,占用字符数量极少,特别适合互联网传递;
可读性较强,虽然比不上XML那么一目了然,但在合理的依次缩进之后还是很容易识别的;
容易编写和解析,当然前提是你要知道数据结构;
2.2 JSON的缺点:
JSON在服务端语言的支持不像XML那么广泛,不过JSON.org上提供很多语言的库。
如果你使用eval()来解析的话,会容易出现安全问题。
2.3 JSON的格式:
JSON只有两种数据类型描述符,大括号{}和方括号[],其余英文冒号:是映射符,英文逗号,是分隔符,英文双引号""是定义符。
大括号{}用来描述一组“不同类型的无序键值对集合”(每个键值对可以理解为OOP的属性描述),方括号[]用来描述一组“相同类型的有序数据集合”(可对应OOP的数组)。
上述两种集合中若有多个子项,则通过英文逗号,进行分隔。
键值对以英文冒号:进行分隔,并且建议键名都加上英文双引号”",以便于不同语言的解析。
JSON内部常用数据类型有字符串、数字、布尔、日期、null 这几个,字符串必须用双引号引起来,其余的都不用,建议把日期时间直接作为字符串传递。
3 JSONP
3.1 跨域请求
基于浏览器的安全策略,不允许脚本的跨域请求。因此AJAX仅限于同域请求。
3.2 解决跨域请求
常见的跨域请求方案:ActiveX控件、服务端代理、Websocket、JSONP
ActiveX控件需要安装(安装量最广的FlashPlayer则不被iOS支持)
服务端代理,扩展,通用性不高。
Websocket需浏览器和服务端支持。
JSONP则仅需服务器端代码实现支持。
3.3 JSONP实现流程
客户端:处理函数定义function handler = function( data ){ }
客户端:请求。url?callback=handler
服务器端:返回 handler( returndata );
客户端:执行handler(returndata);
相关文章推荐
- JQuery1——基础($对象,选择器,对象转换)
- Android学习笔记(二九):嵌入浏览器
- Android java 与 javascript互访(相互调用)的方法例子
- Extjs4.0 最新最全视频教程
- Javascript中toFixed方法的改进
- JavaScript演示排序算法
- javascript实现10进制转为N进制数
- 5个常见可用性错误和解决方案
- 使用 Python 处理 JSON 格式的数据
- 最后一次说说闭包
- Ajax
- js数组实现图片轮播
- XML 与 JSON 优劣对比
- 2019年开发人员应该学习的8个JavaScript框架
- HTML中的script标签研究
- 对一个分号引发的错误研究
- 异步流程控制:7 行代码学会 co 模块
- ES6 走马观花(ECMAScript2015 新特性)