JSON和JSONP的区别,以及使用方法

如题所述

一、指代不同

1、JSON:是一种轻量级的数据交换格式。    

2、JSONP:是JSON的一种“使用模式”,可用于解决主流浏览器的跨域数据访问的问题。

二、特点不同

1、JSON:基于 ECMAScript (欧洲计算机协会制定的js规范)的一个子集,采用完全独立于编程语言的文本格式来存储和表示数据。

2、JSONP:在客户端调用提供JSONP支持的URL Service,获取JSONP格式数据。


三、使用方法不同

1、JSON:简洁和清晰的层次结构使得 JSON 成为理想的数据交换语言。 易于人阅读和编写,同时也易于机器解析和生成,并有效地提升网络传输效率。

2、JSONP:Callback仅仅是JSONP的简单实现,可以根据具体需要实现更复杂的功能,比如可以在客户端动态集成更多的变量数据来完成分页功能。


参考资料来源:百度百科-jsonp

参考资料来源:百度百科-JSON

温馨提示:答案为网友推荐,仅供参考
第1个回答  2019-12-05

1、区别如下:

(1)、定义不同

JSON是一种基于文本的数据交换方式(不支持跨域),而JSONP是一种非官方跨域数据交互协议。

(2)、核心不同

json的核心是通过XmlHttpRequest获取非本页内容,而jsonp的核心则是动态添加<script>标签来调用服务器提供的js脚本。

2、使用方法如下

(1)、json的使用方法:

$.getJSON( " http://跨域的dns/document!searchJSONResult.action?

name1="+value1+"&jsoncallback=?",    function(json){

   if(json.属性名==值){        // 执行代码}

});

(2)、json的使用方法:

$.ajax({    

async:false,    

url: http://跨域的dns/document!searchJSONResult.action,

type:"GET",    

dataType:'jsonp'

});

扩展资料:

JSONP的优缺点:

1、JSONP的优点

它不像XMLHttpRequest对象实现的Ajax请求那样受到同源策略的限制;它的兼容性更好,在更加古老的浏览器中都可以运行,不需要XMLHttpRequest或ActiveX的支持;并且在请求完毕后可以通过调用callback的方式回传结果。

2、JSONP的缺点

它只支持GET请求而不支持POST等其它类型的HTTP请求;它只支持跨域HTTP请求这种情况,不能解决不同域的两个页面之间如何进行JavaScript调用的问题。

本回答被网友采纳
第2个回答  2017-04-14
1、JSON和JSONP的区别如下:
JSON是一种数据交换格式,而JSONP是一种非官方跨域数据交互协议。形象比喻:JSON是地下党们用来书写和交换情报的暗号,而JSONP则是把用暗号书写的情报传递给自己同志时使用的接头方式。
JSON只有两种数据类型描述符,大括号{}和方括号[],其余英文冒号:是映射符,英文逗号,是分隔符,英文双引号""是定义符。
举例:
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>
第3个回答  2016-11-12
JSON是一种数据交换格式,而JSONP是JSON的一种使用模式,是基于JSON的
简单说就是JSON是协议,而JSONP是使用这种协议的一种方法本回答被网友采纳
相似回答