在jquery中使用jsonp跨域请求
来源:互联网 发布:泰伦斯琼斯数据 编辑:程序博客网 时间:2024/06/06 09:58
1.什么是同域
同协议 && 同域名 && 同端口
2.什么是跨域
非同域就是跨域
3.浏览器禁止跨域访问(同域策略)
4.<script>标签的src属性不受同域策略的限制,在你自己的工程中使用下面的code引入一段script脚本也是完全没有问题的
<script type="text/javascript" src="http://static.blog.csdn.net/scripts/jquery.js"></script>
5.根据第4条我们可以这样
<meta content="text/html; charset=utf-8" http-equiv="Content-Type" /><script type="text/javascript"> function jsonpCallback(result) { //alert(result); for(var i in result) { alert(i+":"+result[i]);//循环输出a:1,b:2,etc. } } var JSONP=document.createElement("script"); JSONP.type="text/javascript"; JSONP.src="http://crossdomain.com/services.php?callback=jsonpCallback"; document.getElementsByTagName("head")[0].appendChild(JSONP);</script>
代码的后4行是动态的创建一个<script>标签并添加到head中,其中src指向一个跨域的访问,至于src中的querystring是需要注意的,callback是你需要在后台获取的参数,然后返回的内容需要写成这样jsonpCallback(你需要的json格式数据)以java为例后台关键代码如下:
PrintWriter pw = response.getWriter();String callback = request.getParameter("callback");pw.write(callback+"("+json+")");
其中的json就是你组织好的json格式的数据,这样做的结果就相当于从后台返回了一行js代码,代码的内容是调用jsonpCallback方法,而在页面中恰好就定义了这个方法,所以就直接跳到function jsonpCallback(result) 方法体中去执行相应的代码。
这个就是jsonp的原理了
6.jquery只不过是对此过程进行了封装而已,如何在jquery中使用jsonp呢?关键代码如下:
<script type="text/javascript"> $.ajax({ url:"http://crossdomain.com/services.php", dataType:'jsonp', data:'', jsonp:'callback', success:function(result) { }, timeout:3000 }); 16.</script>
只需要注意两个地方就可以了
1.dataType:'jsonp' 返回值类型为jsonp而不是json
2.jsonp:'callback' 用于在后台获取回掉函数(String callback = request.getParameter("callback");),函数的名字由jquery生成可能是这个样子json12423534543_46534653,自己也可以调试着看一下
其他的部分和利用ajax发送异步请求基本是一致的
0 0
- 在jquery中使用jsonp跨域请求
- jquery使用jsonp跨域请求问题
- 在php中使用jsonp跨域请求
- jquery jsonp跨域请求
- jquery jsonp 跨域请求
- jquery jsonp 跨域请求
- jQuery中JSONP结合Spring MVC实现跨域请求
- 跨域请求之jQuery的ajax jsonp的使用
- 跨域请求之jQuery的ajax jsonp的使用
- 跨域请求之jQuery的ajax jsonp的使用
- .net jquery jsonp跨域请求
- jquery jsonp 跨域请求实例
- jquery+jsonp跨域请求注意事项
- jQuery ajax jsonp实现跨域请求
- JQuery利用JSONP实现跨域请求
- jQuery ajax jsonp实现跨域请求
- JSONP jQuery Ajax 跨域请求
- JS & jQuery 中的 jsonp (跨域请求)
- 新版谷歌地图将更智能 居然知道你想去哪儿
- Python字符串格式编辑
- 加密和解密
- Xcode 5: 将新项目同步到Svn上
- 关于connect: network is unreachable 问题的解决
- 在jquery中使用jsonp跨域请求
- zabbix jmx lld 最佳实践
- 实时/历史数据库和关系型数据库的区别
- php经典算法
- 基础学习
- 牛人谈论CVPR 2015 Deep down the rabbit hole: CVPR 2015 and beyond
- 公司公司代码业务范围成本控制范围概念
- 4.5.2 SwipeRefreshLayout + RecyclerView 实现 上拉刷新 和 下拉刷新
- 【转载】C++文件操作详解(ifstrea…