
聊聊json和jsonp
纯文本格式,跨平台传输简单:JSON数据可以直接以字符串形式传输,不需要依赖特定的数据类型,适合在各种系统间传递。 紧密结合JavaScript:由于JavaScript原生支持JSON解析,前后端开发者可以无缝对接,减少转换成本。 数据量小,传输效率高:JSON文件通常比先前的XML格式更小,减少了传输时间和带宽占用。 易于解析和书写:虽然不如XML那样强调可扩展性,但在合理缩进下,JSON结构也非常清晰,方便开发者理解和修改。 服务器端处理:服务连接接受一个请求,包含 客户端执行:客户端脚本解析响应内容,提取JSON数据并执行回调函数,进行后续处理。 无需依赖.TextInputStream:适用于 灵活性:客户端可以自定义回调函数,根据需求处理数据。 无长度限制:传输的数据量与 传输方式:JSON通过 应用场景:JSONP则通过脚本标签实现,通常用于批量数据获取或无需富交互的场景。 安全性:JSON依赖服务端签名,确保数据安全;而JSONP数据暴露在客户端脚本中,需谨慎处理。
发布日期:2021-05-15 04:58:56
浏览次数:20
分类:精选文章
本文共 2056 字,大约阅读时间需要 6 分钟。
JSON和JSONP: 跨域数据传输的两种方案
JSON的解析
JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,基于文本且易于人阅读和机器解析。它采用键值对的结构,非常适合传递复杂数据。本文将从以下几个方面为您分析JSON的特点及其优势。
JSON的优点
JSON的语法规则
JSON采用键值对的结构,支持两种主要的数据结构集合:
- **
{}
表示对象(键值对集合),每个键对应一个值。 - **
[]
表示数组(具有顺序的单一类型集合)。
JSON的关键符号包括:
:
用于键值对的分隔。,
用于同一层级元素的分隔。" "
用于字符串类型的包裹。- 方括号和花括号分别表示数组和对象。
常用数据类型包括:字符串、数字、布尔值、null和日期。日期处理建议直接以字符串形式传输,避免复杂的格式转换。
JSONP的机制
JSONP(JSON with Padding)是一种非官方的跨域数据传输协议。它通过在script
标签的src
属性中传递一个callback
函数名称,来获取远程服务器返回的JSON数据。与传统的AJAX
不同,JSONP并不通过XMLHttpRequest
对象,而是利用JavaScript的script
标签来实现。
JSONP工作原理
callback
参数,指定要调用本地的函数名称。服务器返回的数据格式为:callback({data})
,将JSON数据包裹在指定函数中。JSONP的优势
AJAX
禁止的情况下,仍能实现跨域数据获取。script
标签一致,通常不会受到浏览器大小限制。JSONP的实现示例
假设我们有一个远程服务器提供数据服务:
// 远程文件: remote.jslocalHandler({"result":"远程数据"});// 本地文件: localserver.com// 调用接口:var url = "http://flightQuery.com/jsonp/flightResult.aspx?code=CA1998&callback=flightHandler";var script = document.createElement('script');script.src = url;document.head.appendChild(script);
运行后,远程脚本会调用localHandler
函数,并将JSON数据传递进去。
jQuery对JSONP的支持
使用jQuery可以简化JSONP调用。例如,可以通过以下方式实现:
$.ajax({ type: "GET", url: "http://flightQuery.com/jsonp/flightResult.aspx", dataType: "jsonp", jsonp: "callback", jsonpCallback: "flightHandler", success: function(json) { console.log(json.result); }});
jQuery会自动处理JSONP数据,使得开发者无需手动定义回调函数。
JSON与JSONP的对比
尽管JSON和JSONP在跨域数据传输中扮演重要角色,但二者本质上有所不同:
XMLHttpRequest
实现,依赖服务端代理,适合需要用户交互的AJAX
请求。结论
在跨域数据传输中,JSON和JSONP各有优势但也各有局限。开发者应根据项目需求选择最优方案,例如:
- 当需要频繁交互或操作复杂数据结构时,JSON是更合适的选择。
- 当专注于数据获取或批量数据传输时,JSONP可以提供灵活的解决方案。
通过合理配置和工具的支持,开发者可以轻松应对跨域数据传输的挑战,构建高效的应用程序。
发表评论
最新留言
能坚持,总会有不一样的收获!
[***.219.124.196]2025年04月29日 21时16分16秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
2020-05-31 py执行时超时控制
2019-03-12
一段强大的shellcode
2019-03-12
双链表相加问题
2019-03-12
GB2312-80 汉字机内码
2019-03-12
n的a进制数
2019-03-12
配置jdk的环境变量
2019-03-12
echo命令的颜色及同行显示控制
2019-03-12
CentOS7利用Systemd添加用户自定义系统服务
2019-03-12
懒人HTML5笔记-1
2019-03-12
两台服务器http方式共享yum软件仓库
2019-03-12
团队背包(team)
2019-03-12
spring tx:advice 和 aop:config 配置事务
2019-03-12
修改layui的后台模板的左侧导航栏可以伸缩
2019-03-12
ThreadLocal源码分析解密
2019-03-12
编译android源代码(aosp)
2019-03-12
Java流程控制语句
2019-03-12
wincc实现手机APP远程监控
2019-03-12
3.6.X版本的OSG无法打开osgShadow/ShadowVolume的问题
2019-03-12
vue手写 头部 滑动按钮 点击查看更多,可折叠
2019-03-12
IDEA 找不到 Persistence窗口解决办法
2019-03-12