Jsonp原理
来源:互联网 发布:紧急域名升级通知 编辑:程序博客网 时间:2024/09/21 06:34
转自:http://justcoding.iteye.com/blog/1366102/
知道跨域问题可以使用jsonp解决,原理理解的不是很清楚
JSONP(JSON with Padding)是一个非官方的协议,它允许在服务器端集成Script tags返回至客户端,通过javascript callback的形式实现跨域访问(这仅仅是JSONP简单的实现形式)。
Jsonp原理:
首先在客户端注册一个callback, 然后把callback的名字传给服务器。
此时,服务器先生成 json 数据。
然后以 javascript 语法的方式,生成一个function , function 名字就是传递上来的参数 jsonp.
最后将 json 数据直接以入参的方式,放置到 function 中,这样就生成了一段 js 语法的文档,返回给客户端。
客户端浏览器,解析script标签,并执行返回的 javascript 文档,此时数据作为参数,传入到了客户端预先定义好的 callback 函数里.(动态执行回调函数)
实现:
1.
<meta content="text/html; charset=utf-8" http-equiv="Content-Type" /><script type="text/javascript">function jsonpCallback(result) {//alert(result);for(var i in result) {alert(i+":"+result[i]);//循环输出a:1,b:2,etc.}}var JSONP=document.createElement("script");JSONP.type="text/javascript";JSONP.src="http://crossdomain.com/services.php?callback=jsonpCallback";document.getElementsByTagName("head")[0].appendChild(JSONP);</script>2.
<meta content="text/html; charset=utf-8" http-equiv="Content-Type" /><script type="text/javascript">function jsonpCallback(result) {alert(result.a);alert(result.b);alert(result.c);for(var i in result) {alert(i+":"+result[i]);//循环输出a:1,b:2,etc.}}</script><script type="text/javascript" src="http://crossdomain.com/services.php?callback=jsonpCallback"></script>JavaScript的链接,必须在function的下面。
使用JSON的优点在于:
比XML轻了很多,没有那么多冗余的东西。
JSON也是具有很好的可读性的,但是通常返回的都是压缩过后的。不像XML这样的浏览器可以直接显示,浏览器对于JSON的格式化的显示就需要借助一些插件了。
在JavaScript中处理JSON很简单。
其他语言例如PHP对于JSON的支持也不错。
JSON也有一些劣势:
JSON在服务端语言的支持不像XML那么广泛,不过JSON.org上提供很多语言的库。
如果你使用eval()来解析的话,会容易出现安全问题。
尽管如此,JSON的优点还是很明显的。他是Ajax数据交互的很理想的数据格式。
阅读全文
0 0
- jsonp 原理
- JSONP原理
- jsonp原理
- JSONP原理
- jsonp原理
- jsonp原理
- jsonp原理
- jsonp原理
- jsonp原理
- JSONP原理
- Jsonp原理
- jsonp 原理
- JSONP原理
- jsonp原理
- JSONP 原理
- Jquery的Jsonp原理
- JSONP原理与实现
- Jsonp原理及实现
- 算法训练 2的次幂表示
- 先抓习惯,再谈成绩
- C语言中定义int变量,默认值是多少?Scanf(),Printf()浅析。
- 求1-100中和7有关的数 …
- 04. JDBC 事务操作
- Jsonp原理
- AI智能人机对战五子棋(Java实现图形界面)
- Springboot-session
- JavaScript数据结构(2):栈与队列
- Dijkstra(迪杰斯特拉) 最短路+模板
- Codeforces Round #425 (Div. 2) D. Misha, Grisha and Underground LCA模版
- iOS10App如何跳转到系统设置
- 使用LinkItOne板子遇到的问题
- BUAA OJ 382 中世界的Thor