您的位置:首页 > Web前端 > JavaScript

关于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);
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  js javascript jsonp json