JS与JSON  

  JSON 本身的意思是 JavaScript 对象表示法(JavaScript Object Notation),可以说这种数据格式是从 JavaScript 对象中演变出来的。JSON 语法是 JavaScript 对象表示法语法的子集。

  JSON仅仅是一种数据格式,数据格式其实就是一种规范,按照这种规范来存诸和交换数据,就好像 XML 格式一样。

  JS 是一门语言,JSON 是另一门语言,JSON 这门语言抄袭了 JS这门语言,并且JSON的设计者编写了(javascript语言精粹)蝴蝶书(这让JS之父情何以堪~~)下面是JSON与JS在语法上(JS有7种数据类型)的区别:

javascript和json javascript和json关系_跨域

JSON与JSONP

  JSON是一种轻量级的数据交换格式,JSONP是一种跨域数据交互协议。

  JSON全名叫做json with padding,是理想的数据交换格式,但没办法跨域直接获取,于是就将json包裹(padding)在一个合法的js语句中作为js文件传过去。这就是json和jsonp的区别。

  如果说json是想得到的结果,那么jsonp就是获得这个结果采用的一种方法,当然最终获得和处理的还是json。所以说json是目的,jsonp只是手段。并且jsonp只有在跨域获取数据时才会用到。


JSONP与AJAX

 相同点:ajax和jsonp的调用方式很像,目的一样,都是请求url,然后把服务器返回的数据进行处理

  不同点:AJAX(异步的Javascript和XML)核心是通过XMLHttpRequest请求内容,支持get、post、delete等。(通过CORS可以突破同源政策的限制实现跨域请求)

           JSONP的核心则是通过动态添加<script>标签来调用服务器提供的js脚本(后缀.json),只支持get请求。(网页通过添加一个script元素向服务器请求JSON数据,这种做法不受同源政策的限制,服务器在收到请求后,将数据打包放在一个指定名字的回调函数里传回来)

  虽然两者的调用方法和作用看上去很像,但它们本质上是不同的东西。它们的区别也不在于是否跨域,AJAX 也可以实现跨域,jsonp 本身也不排斥同域的数据的获取。

  CORS全称是跨域资源共享(Cross-origin resource sharing)能克服 AJAX 只能同源使用的限制,简单来说就是服务端在响应头中添加一个 Access-Control-Allow-Origin 的头部,头部的值为客户端的域名,eg:

response.setHeader('Access-Control-Allow-Origin','http://jayce.com:8003')