JSONP的原理介绍
2013-03-26 19:38
169 查看
1.JSOP存在的必要性 参考1 ,2
Ajax数据的获取需要遵循同源的策略,也就是需要使用相同的域名、端口、协议,所以要想获取不同域的数据就存在问题。因此基于此问题就衍生出了很多解决Ajax跨域的技术,譬如:服务器代理、img、iframe等等技术。 JSONP是JSON with padding的缩写。
2.JSONP的原理
在本地创建一个回调函数,然后在跨域段调用该回调函数,并将JSON数据作为参数传递给回调函数,完成回调。
3.案例解析
a.html需要跨域解决问题
在b页面,执行回调函数,并将json数据作为参数填充到回调函数中,完成回调函数
4.Ajax技术与JSONP技术的差别
1.两种技术“看起来”很像,目的一样,都是请求一个URL,然后对从服务器端获取的数据进行处理;
2.Ajax技术的核心是通过XMLHttpRequest对象来获取数据,而JSONP通过动态创建script,然后在服务器端执行回调函数完成数据的获取,采用的是两种完全不同的技术;
3.区别不在于是否跨域,jsonp也可以解决同域的数据获取。
5.解决跨域的其他方法
iframe、服务器代理、图片等等
Ajax数据的获取需要遵循同源的策略,也就是需要使用相同的域名、端口、协议,所以要想获取不同域的数据就存在问题。因此基于此问题就衍生出了很多解决Ajax跨域的技术,譬如:服务器代理、img、iframe等等技术。 JSONP是JSON with padding的缩写。
2.JSONP的原理
在本地创建一个回调函数,然后在跨域段调用该回调函数,并将JSON数据作为参数传递给回调函数,完成回调。
3.案例解析
a.html需要跨域解决问题
<script> function aa(data){ alert(data.message); } function loadScript(url){ var script = document.createElement('script'); script.setAttribute('type','text/javascript'); script.src = url; document.body.appendChild(script); } window.onload = function(){ var a = document.getELementById('aaa'); a.onclick = function(){ var url = "http://b.html?callback=aa"; loadScript(url); } } </script>
在b页面,执行回调函数,并将json数据作为参数填充到回调函数中,完成回调函数
1.获取回调函数 2.然后执行回调函数 var data = { "message" :"sucess" } callback(data);
4.Ajax技术与JSONP技术的差别
1.两种技术“看起来”很像,目的一样,都是请求一个URL,然后对从服务器端获取的数据进行处理;
2.Ajax技术的核心是通过XMLHttpRequest对象来获取数据,而JSONP通过动态创建script,然后在服务器端执行回调函数完成数据的获取,采用的是两种完全不同的技术;
3.区别不在于是否跨域,jsonp也可以解决同域的数据获取。
5.解决跨域的其他方法
iframe、服务器代理、图片等等
相关文章推荐
- JSONP跨域的原理解析及其实现介绍
- JSONP跨域的原理解析及其实现介绍
- JSONP跨域的原理解析及其实现介绍
- JSONP跨域的原理解析及其实现介绍
- jsonp实现原理详细介绍
- JSONP跨域的原理解析及其实现介绍
- JSONP跨域的原理解析及其实现介绍
- RocketMQ原理以及源码解析目录介绍
- 架构师之路--视频业务介绍,离线服务架构和各种集群原理(1/2)
- SolrCloud使用教程、原理介绍
- storm 入门原理介绍
- Jdk1.8 HashMap实现原理详细介绍
- 韩顺平_php从入门到精通_视频教程_第1讲_html介绍_html运行原理①_学习笔记_源代码图解_PPT文档整理
- SolrCloud原理介绍 [
- 使用经验分享及实现原理简单介绍,dubbo经验分享
- Linux内核驱动开发之KGDB原理介绍及kgdboe方式配置
- 浅谈Android之Binder原理介绍(三)
- 脱壳 原理与工具介绍
- Android增量升级的方法和原理详细介绍
- JS跨域(ajax跨域、iframe跨域)解决方法及原理详解(jsonp)