JSON是一种基于文本的数据交换方式(不支持跨域),而JSONP是一种跨域数据交互协议。
JSON:
JSON 指的是 JavaScript 对象表示法(JavaScript Object Notation)。
JSON 语法规则:名称/值对(名称需要引号)。
JSON 值可以是:数字、字符串(" ")、逻辑、数组([ ])、对象({ })、null。
JSON.parse() 方法将数据转换为 JavaScript 对象:
JSON.parse(text[, reviver]) //text:必需, 一个有效的 JSON 字符串。
//reviver: 可选,一个转换结果的函数, 将为对象的每个成员调用此函数。
JSON.stringify() 方法将 JavaScript 对象转换为字符串:
JSON.stringify(value[, replacer[, space]]) //value: 必需为一个有效的 JSON 对象。
//replacer: 可选。用于传入每个成员的键和值到指定函数或数组。
//space:可选,文本添加缩进、空格和换行符,如果 space 是一个数字,则返回值文本在每个级别缩进指定数目的空格
JSONP:
JSONP(JSON with Padding) 是 json 的一种"使用模式",可以让网页从别的域名(网站)那获取资料,即跨域读取数据。简单的说,就是json不支持跨域,而js可以跨域,因此在服务器端用客户端提供的js函数名将json数据封装起来,再将函数提供给客户端调用,从而获得json数据。
原理:script标签src属性中的链接却可以访问跨域的js脚本,利用这个特性,服务端不再返回JSON格式的数据,而是返回一段调用某个函数的js代码,在src中进行了调用,这样实现了跨域。
同源:
URL由协议、域名、端口和路径组成,如果两个URL的协议、域名和端口相同,则表示他们同源。
同源策略:
浏览器的同源策略,限制了来自不同源的"document"或脚本,对当前"document"读取或设置某些属性。