JSON & JSONP

说JSON和JSONP,也许你会豁然开朗,含jQuery用例

不是一回事!

JSON是描述信息的格式,JSONP是信息传递双方约定的方法

JSON

  • MIME type(Media type):application/json

  • JSON "Object": A collection of key:value pairs, comma-seperated and enclosed in curly brackets

1. Properties

1) light-weight: 占用字符数量极少,特别适合互联网传递

2) text-based: 基于纯文本,跨平台传递极其简单;

3) easy to parse: 简单

4) Language Independent: Javascript原生支持,后台语言几乎全部支持

2. format

  • 大括号(curly brackets){}用来描述一组“不同类型的无序键值对集合”(每个键值对可以理解为OOP的属性描述),方括号(square brackets)[]用来描述一组“相同类型的有序数据集合”(可对应OOP的数组)

  • 多个子项用逗号(comma)隔开

  • 键名用双引号(double quotation marks)

  • 键值、键名用冒号(colon)隔开

3. 例子

// 描述一次会议
var conference = {
    "Conference": "Future Marketing",
    "Date": "2012-6-1",
    "Address": "Beijing",
    "Members": 
    [
        {
            "Name": "Bob",
            "Age": 32,
            "Company": "IBM",
            "Engineer": true
        },
        {
            "Name": "John",
            "Age": 20,
            "Company": "Oracle",
            "Engineer": false
        },
        {
            "Name": "Henry",
            "Age": 45,
            "Company": "Microsoft",
            "Engineer": false
        }
    ]
}

// 读取参会者Henry是否工程师
var henryIsAnEngineer = conference.Members[2].Engineer;

JSONP

  • JSON with Padding is a JSON extension wherein the name of callback function is specified as an input argument of the call itself

  • MIME type(Media type):application/javascript

  • 目的:解决cross-domain restriction,使一个网页能够向另一个网域的网页得到数据

  • 原理:

1)利用 <script> tag 的src可以进行跨域数据获取

2)返回的JSON数据被一个callback函数wrapped around.

3)由于callback函数在本地的script中被定义,因此的到的JSON数据就能够成功被parse

4)如果没有wrap,返回的JSON数据相当于JS中的一段代码,无法解析,语法报错。

3)为了便于让服务器知道函数的名字,因此在讲callback函数的名字作为服务器请求的一部分, 常用jsonp或者callback作为query中参数名

  • Example
<script type="application/javascript"
        src="http://server.example.com/Users/1234?callback=parseResponse">
</script>

results matching ""

    No results matching ""