javascript实现jsonp跨域访问
来源:互联网 发布:js获取指定网页内容 编辑:程序博客网 时间:2024/06/07 19:31
所谓的jsonp跨域访问,其实就是利用了script标签来发送请求,返回的数据为javascript代理,在返回的javascript代码中调用已经写好的javascript方法,传入需要的参数进行处理即可。
下面是项目中用到的跨域访问代码:
1、inc_footer.vm页面代码
<div id="common-footer"></div><script type="text/javascript"> $(function () { loadFooterPage() }); function pageCallback(data){ $("#common-footer").html(data); } function loadFooterPage() { var script = document.createElement("script"); script.type = "text/javascript"; script.src = "${cfg.portalCtx}/common/footerpage"; document.body.appendChild(script); }</script>在这段代码中我定义了两个方法loadFooterPage和pageCallback,其中pageCallback方法有个参数data,其实就是跨域请求以后需要调用pageCallback返回并传入一个data参数。loadFooterPage方法只是为了动态创建script标签,并添加到body里面,当当前页面加载完成后才执行loadFooterPage方法,这样做的好处是不影响当前页面的加载。执行loadFooterPage方法后body里面就会多一个script,浏览器会解释执行script标签,去请求script指定的scr路径,执行成功以后返回的内容会被当作javascript执行。
2、controller处理请求后返回
return "common/inc_footer_page";
接着看我的返回页面部分
3、inc_footer_page.vm代码
pageCallback('<div>...</div>')在我返回页面的只是像写javascript代码一样调用前面写好的pageCallback方法,并传入了参数,返回该页面给调用页时就会执行该调用语句,这样简单的跨域返回就实现了。
注:我用的是springmvc架构,模板引擎用的是velocity,上面的script的src请求路径当然是要过controller处理的,在controller只是作了数据查询等操作,然后return页面。
很多jsonp的文章都会提到一个callback参数,其实是封装的jsonp框架不知道你要调哪个函数来执行请求成功以后的操作,所以要传这个callback参数。上面的代码如果以callback参数来确定调哪个函数,可以改为如下形势
script.src = "${cfg.portalCtx}/common/footerpage?callback=pageCallback";然后在controller中将这个参数放到model中(方便在页面中获取方法名)
model.addAttribute("callback",callback);最后在inc_footer_page.vm中调用方法
$!{callback}('<div>...</div>')
0 0
- javascript实现jsonp跨域访问
- JavaScript跨域访问之JSONP实现原理
- jsonp实现跨域访问
- JSONP实现跨域访问
- jsonp实现跨域访问
- JSON和JSONP JSONP 实现跨域访问
- 用jsonp实现跨域访问
- JSON和JSONP 实现跨域访问
- jsonp jquery jersey 实现跨域访问
- jsonp jquery jersey 实现跨域访问
- angularJS通过jsonp实现跨域访问
- jsonp实现json数据跨域访问
- 实践:jsonp实现跨域访问
- JSONP跨域访问实现登录验证
- springmvc实现jsonp跨域接口访问
- jsonp实现JavaScript跨域请求
- jsonp 跨域访问
- JSONP跨域访问
- 在web工程中使用spring(web.xml)
- 第四次上机实验
- Block
- 博客开通,记一下自己的用户名由来
- 进程间的通信(互斥锁、条件变量、读写锁、文件锁、信号灯)
- javascript实现jsonp跨域访问
- leetcode-234. Palindrome Linked List
- CodeForces - 237C Primes on Interval (素数打表&二分)
- hdu 2181 哈密顿绕行世界问题 (dfs)
- JavaScrip随机生成五十位学生加学号
- ffmpeg 将图片序列合成为一段视频
- Struts2基础知识(三)
- apache+tomcat集群配置
- 3递归爬楼梯