匿名用户
1级
2016-11-13 回答
1、JSON和JSONP的区别如下:
JSON是一种数据交换格式,而JSONP是一种非官方跨域数据交互协议。形象比喻:JSON是地下党们用来书写和交换情报的暗号,而JSONP则是把用暗号书写的情报传递给自己同志时使用的接头方式。
JSON只有两种数据类型描述e69da5e887aa3231313335323631343130323136353331333363366165符,大括号{}和方括号[],其余英文冒号:是映射符,英文逗号,是分隔符,英文双引号""是定义符。
举例:
var person = {
"Name": "Bob",
"Age": 32,
"Company": "IBM",
"Engineer": true
}
jsonp的核心则是动态添加<script>标签来调用服务器提供的js脚本。
2、实现方式:
json就是一种数据交换格式,在js中定义成符合json语法的数据格式就可以了。
// 描述一次会议
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
}
]
}
jsonp的实现需要定义调用接口以及回调方法:
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title></title>
<script type="text/javascript">
// 得到航班信息查询结果后的回调函数
var flightHandler = function(data){
alert('你查询的航班结果是:票价 ' + data.price + ' 元,' + '余票 ' + data.tickets + ' 张。');
};
// 提供jsonp服务的url地址(不管是什么类型的地址,最终生成的返回值都是一段javascript代码)
var url = "http://flightQuery.com/jsonp/flightResult.aspx?code=CA1998&callback=flightHandler";
// 创建script标签,设置其属性
var script = document.createElement('script');
script.setAttribute('src', url);
// 把script标签加入head,此时调用开始
document.getElementsByTagName('head')[0].appendChild(script);
</script>
</head>
<body>
</body>
</html>
</body>
</html>