jsonp原理

(转http://www.sojson.com/blog/121.html
JSONP 是一种非正式传输协议,该协议的一个要点就是允许用户传递一个callback 或者开始就定义一个回调方法,参数给服务端,然后服务端返回数据时会将这个callback 参数作为函数名来包裹住 JSON 数据,这样客户端就可以随意定制自己的函数来自动处理返回数据了。
JSONP 和 JSON 的区别: JSON 是一种传输格式,而 JSONP 呢是一种数据的获取方式。其实他们没什么相关性,有的人说带callback的 JSON 传输就是 JSONP ,下面我会证明这是错误的说法。 JSONP 可以跨域,记住这一点就可以了。下面开始 Demo 演示。
一、简单JSONP演示
JS 代码:
1.
2. //jsonp回调方法,一定要写在jsonp请求前面
3. function callback(txt){
4. alert(txt);
5. }

7.
Java 代码(后端):
1. /**
2. * jsonp 测试
3. * @return
4. */
5. @RequestMapping(value=”testJsonp”,method=RequestMethod.GET)
6. @ResponseBody
7. public String testJsonp(){
8. return “callback(‘test jsonp’);”;()
9. }
此时,当页面加载的时候,会alert 一个messag “test jsonp” ,表示成功了,这里注意的一点就是,回调方法要在调用之前,要不然会出现说callback 方法是未定义的错误。
二、自定义callback函数
js方法:
1.
2. //jsonp回调方法,一定要写在jsonp请求前面
3. function testjson(txt){
4. alert(txt);
5. }

7.
Java代码(后端)
1. /**
2. * jsonp 测试
3. * @return
4. */
5. @RequestMapping(value=”testJsonp”,method=RequestMethod.GET)
6. @ResponseBody
7. public String testJsonp(String callback){
8. return callback +”(‘test jsonp’);”;
9. }
很easy吧。
三、 Ajax JSONP Demo。
JS代码:
1.
2. function callback_fn(data){
3. alert(data + ":2");
4. }
5. .ajax(6.type:"get",7.dataType:"jsonp",8.url:"/demo/testJsonp.shtml",9.jsonpCallback:"callbackfn",10.success:function(data)11.alert(data+":1");12.13.);Java1.@RequestMapping(value=testJsonp)2.@ResponseBody3.publicStringtestJsonp(Stringcallback)4.returncallback+(testjsonp);;5.callbackfndataDemoJSONPsinaJSONPJS1.2.functioncallbackfn(data)3.console.log("callbackfn");4.console.log(data);5.6. .ajax({
7. type:"get",
8. dataType:"jsonp",
9. url:"http://sax.sina.com.cn/newimpress?adunitid=PDPS000000047325&rotate_count=36",
10. jsonpCallback:"callback_fn",
11. success:function(data){
12. console.log("success");
13. console.log(data);
14. }
15. });

看控制台输出的内容。
[图片]
已经OK了,这些 JSONP 的 Demo 可以自己演练一下。

1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看REAdMe.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看REAdMe.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看READme.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值