jsonp原理
来源:互联网 发布:旅游英语口语速成软件 编辑:程序博客网 时间:2024/06/05 08:15
(转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.
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 可以自己演练一下。
- jsonp 原理
- JSONP原理
- jsonp原理
- JSONP原理
- jsonp原理
- jsonp原理
- jsonp原理
- jsonp原理
- jsonp原理
- JSONP原理
- Jsonp原理
- jsonp 原理
- JSONP原理
- jsonp原理
- JSONP 原理
- Jquery的Jsonp原理
- JSONP原理与实现
- Jsonp原理及实现
- printf的输出规则
- 浅析迭代器失效
- Java数据类型和集合的小结
- NYOJ-1276-机器设备
- 腾讯云主机上部署tomcat,以及正确的访问网页访问路径
- jsonp原理
- AutoView自动为旧设计稿更新新设计稿尺寸
- 反射获取Class对象的四种方法
- material design使用总结
- 4.2.4重命名表 RENAME TABLE 4.2.5删除表 DROP TABLE
- ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock'
- java数据结构与算法之平衡二叉树(AVL树)的设计与实现中的事实代码
- ubuntu安装 Jupyter notebook 显示错误: ImportError: No module named 'pysqlite2'
- Hadoop之HDFS的简单介绍及常用命令