jsonp 小结
来源:互联网 发布:iphone数据恢复教程 编辑:程序博客网 时间:2024/06/05 19:19
JSONP是JSON with Padding的略称。
它允许在服务器端集成Script tags返回至客户端,通过javascript callback的形式实现跨域访问(这仅仅是JSONP简单的实现形式)
<script>标签的src属性并不被同源策略所约束,所以可以获取任何服务器上脚本并执行。
Google的ajax搜索接口:http://ajax.googleapis.com/ajax/services/search/web?v=1.0&q=?&callback=?
返回一段js代码
var flightHandler = function(data){ alert('你查询的航班结果是:票价 '+ data.price +' 元,'+'余票 '+ data.tickets +' 张。'); };// 提供jsonp服务的url地址(不管是什么类型的地址,最终生成的返回值都是一段javascript代码)var url ="http://flightQuery.com/jsonp/flightResult.aspx?code=CA1998&callback=flightHandler";
url中传递了一个code参数,告诉服务器我要查的是CA1998次航班的信息,而callback参数则告诉服务器,我的本地回调函数叫做flightHandler,所以请把查询结果传入这个函数中进行调用。
服务器flightResult.aspx页面生成了一段这样的代码提供给jsonp.html(服务端的实现说到底就是拼接字符串):
flightHandler({ "code": "CA1998", "price": 1780, "tickets": 5});
我们看到,传递给flightHandler函数的是一个json,它描述了航班的基本信息。运行一下页面,成功弹出提示窗口,jsonp的执行全过程顺利完成!
利用<script>标签没有跨域限制的“漏洞”来达到与第三方通讯的目的。当需要通讯时,本站脚本创建一个<script>元素,地址指向第三方的API网址,形如:
<script src="http://www.example.net/api?param1=1¶m2=2"></script>
并提供一个回调函数来接收数据(函数名可约定,或通过地址参数传递)。
第三方产生的响应为json数据的包装(故称之为jsonp,即json padding),形如:
callback({"name":"hax","gender":"Male"})
这样浏览器会调用callback函数,并传递解析后json对象作为参数。本站脚本可在callback函数里处理所传入的数据。
允许用户传递一个callback参数给服务端,然后服务端返回数据时会将这个callback参数作为函数名来包裹住JSON数据
http://www.runoob.com/json/json-jsonp.html
阅读全文
0 0
- JSONP小结
- jsonP小结
- jsonp 小结
- JSONP相关知识小结
- [Web]jsonp跨域访问小结
- JSONP
- jsonp
- JSONP
- jsonp
- jsonp
- JSONP
- jsonp
- Jsonp
- jsonp
- JSONP
- JSONP
- JSONp
- JSONP
- 通过Actor模型解决C++ 并发编程的一种思维 — Theron 库简述
- Oracle 外连接和(+)号的用法
- 51nod 1191 消灭兔子(优先队列好题)
- bzoj 4720(NOIP2016) 换教室 期望DP+SPFA
- SpringBoot集成Redis来实现缓存技术方案
- jsonp 小结
- ThreadLocal浅析
- JS如何创建对象和继承对象
- java语言程序设计第八版第十章十一题
- HDU 1042
- Android利用手机拍照和从相册读取照片的方法
- Window 安装卸载MongoDB 进程服务
- 【题解】弋或树
- HTTP与HTTPS的区别以及代码实现请求