JSON是一种基于文本的数据交换方式(不支持跨域),而JSONP是一种非官方跨域数据交互协议。
一、区别
简单来说,json是一种数据交换格式,jsonp是一种非官方跨域数据交互协议。json描述的是信息的格式,而jsonp是信息传递双方约定的方法。json返回的是一串数据,而 jsonp返回的是脚本代码(包含一个函数调用)。
json是理想的数据交换格式,但是没有办法跨域直接获取,于是就将json包裹在一个合法的js语句中作为js文件传过去。json是想要的东西,jsonp是获取这个东西采取的方法,所以最终获得和处理的还是json。所以可以这么说,json是目的,jsonp只是手段。json总会用到,而jsonp只有在跨域数据获取的时候才会用到。
二、定义
json可以理解为是一种格式,它的键必须用双引号。json格式的对象必须写在{}花括号里面,json格式的数组写在[]大括号里面。
JSON.parse(字符串)可以将json字符串转换成json对象;
JSON.stringify(jsonObj)可以将json对象转换成json字符串。
jsonp实现跨域的原理:
利用script标签没有跨域限制来达成和第三方通信,允许用户传一个callback给服务端,服务端返回数据会将这个callback参数作为函数名来包裹json数据,这样客户端就可以定制自己的函数来处理返回的数据。