JS与JSON、JSON与JSONP、JSONP与AJAX的区别

本文解析了JSON(JavaScript对象表示法)作为一种数据交换格式的特点及其与JavaScript的关系,对比了JSON与JSONP的不同之处,并探讨了JSONP与AJAX在实现跨域数据交互上的区别。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

JS与JSON  

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

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

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


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')


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值