浅谈JSON和JSONP的区别

原创 2017年08月12日 16:20:56

以前经常把JSON和JSONP搞混淆,最近特意查阅了相关资料终于搞明白两者关系了,简单说一下。

JSON
JSON是一种基于文本的数据交换格式,用于描述复杂的数据,举个例子,描述一个学生的信息可以这样子写:

var student = {
    "id":"001",
    "name":"张三",
    "sex":"男",
    "age":20
}

console.log(student.id);     //001
console.log(student.name);   //张三

然后就可以通过student.id,student.name这种方式获取这个学生的学号和姓名。

如果描述多个学生信息的话也大同小异,可以这样写:

var student =[
    {
        "id":"001",
        "name":"张三",
        "sex":"男",
        "age":20
    },
    {
        "id":"002",
        "name":"李四",
        "sex":"女",
        "age":21
    },
    {
        "id":"003",
        "name":"王五",
        "sex":"男",
        "age":19
    }
]

console.log(student[0].id);     //001
console.log(student[1].name);   //李四

然后就可以通过student[0].id,student[1].name这种方式获取这些学生的学号和姓名了。

JSON其实应用得很广泛,不难理解,但是JSONP就很容易被误解了, 以为跟JSON一样,实际上是两个不同的东西。

JSONP
如果你理解了JSON是一种数据交换格式,那么JSONP就是一个跨域交互协议,可以理解为,JSONP约定了JSON的这个数据怎样进行传递。

再讲详细点,跨域是指从一个域名去请求另一个域名的资源,我们知道,如果直接用AJAX请求的时候,由于浏览器同源策略的存在,很容易产生跨域问题,同源策略是指域名、协议、端口均相同,如果不同则视为跨域请求,跨域请求一律都是不行的。

想要跨域请求资源,除非我们运用js的特性:script标签中的链接可以访问跨域的js文件,于是跨域服务器可以这样做,它把客户端需要的数据动态包装成js文件然后提供给客户端请求。这种数据传递方式慢慢就形成了一种传输协议,这就是JSONP了。

版权声明:本文为博主原创文章,未经博主允许不得转载。

json与jsonp的区别、同源策略

有关json与jsonp的区别(json才是目的,jsonp只是手段)介绍如下所示: 一言以蔽之,json返回的是一串数据;而jsonp返回的是脚本代码(包含一个函数调用); JSON...
  • jing_valora
  • jing_valora
  • 2016年07月15日 10:44
  • 2370

说说JSON和JSONP,也许你会豁然开朗

转载地址:说说JSON和JSONP,也许你会豁然开朗 前言   由于Senc 前言   由于Sencha Touch 2这种开发模式的特性,基本决定了它原生的数据交互行为几乎只能通过AJAX来...
  • u010648555
  • u010648555
  • 2016年06月23日 15:51
  • 1716

对Json 和jsonp跨域请求数据 的理解

JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。对于JSON大家应该是很了解了吧,不是很清楚的朋友可以去json.org上了解下,简单易懂。JSONP是J...
  • u014209090
  • u014209090
  • 2014年12月10日 16:12
  • 5110

浅谈JSON和JSONP区别及jQuery的ajax jsonp的使用

浅谈JSON和JSONP区别及jQuery的ajax jsonp的使用
  • YiDaShi33
  • YiDaShi33
  • 2017年01月10日 18:28
  • 195

浅谈JSON和JSONP

JSON(JavaScript Object Notation)和JSONP(JSON with Padding)虽然只有一个字母的差别,但其实他们根本不是一回事儿:JSON是一种数据交换格式,而JS...
  • SUN_MA
  • SUN_MA
  • 2016年09月02日 16:07
  • 150

浅谈 json 与 json的跨域解决方案: jsonp

由于Sencha Touch 2这种开发模式的特性,基本决定了它原生的数据交互行为几乎只能通过AJAX来实现。 当然了,通过调用强大的PhoneGap插件然后打包,你可以实现100%的Socket通...
  • hzcyclone
  • hzcyclone
  • 2012年07月13日 14:45
  • 1274

浅谈PHP与javascript之JSON XML 数组 对象三者的区别

一、认识JSON是什么 先来说说什么是JSON。所谓json即javascript Object Notation (javaScript对象符号).它是基于JavaScript(Standar...
  • freshlover
  • freshlover
  • 2013年04月09日 19:15
  • 2073

json和jsonp和ajax的实质和区别

json和jsonp和ajax的实质和区别 ajax的两个问题   1.ajax以何种格式来交换数据   2.跨域的需求如何解决     数据跨域用自定义字符串或者用XML来描述     跨...
  • licanty
  • licanty
  • 2017年04月05日 23:21
  • 563

JSON和JSONP有哪些区别,PhoneGap跨域请求如何实现

JSON和JSONP有哪些区别,PhoneGap跨域请求如何实现 2013-8-23 19:18|发布者: admin|查看: 2810|评论: 2 摘要: 前言   由于Se...
  • woshiwxw765
  • woshiwxw765
  • 2014年03月01日 12:23
  • 2949

简单描述JSON跟JSONP的区别

JSON和JSONP虽然只有一个字母的差别,但其实他们根本不是一回事儿:JSON是一种数据交换格式,而JSONP是一种依靠开发人员的聪明才智创造出的一种非官方跨域数据交互协议。 JSON的优...
  • u012570652
  • u012570652
  • 2017年04月10日 13:13
  • 203
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:浅谈JSON和JSONP的区别
举报原因:
原因补充:

(最多只允许输入30个字)