AJAX请求是无法跨域的。如果要实现跨域访问【好比要访问外部站点的公共接口】,有以下2种方式
1.使用JSONP
2.使用代理,及在本项目后台远程访问外部接口。
一 JSONP实现原理。
Javascript由于出于安全考虑,通常无法实现跨域访问。可是有个例外:
<script type="text/javascript" src="http://localhost:8888/RemoteServer/jsonp.js"></script>
通过script标签的可以访问外部js文件的。
假如jsonp.js的内容如下
callback({name:"hello world."});
而引入json.js的html文件中有如下js方法定义
function callback(data){ alert(JSON.stringify(data)); }
那么当加载完<script type="text/javascript" src="http://localhost:8888/RemoteServer/jsonp.js"></script>会立马执行callback方法【注:script引入必须在callback方法定义之后】。
再假如我们将以上的script标签改为如下:
<script type="text/javascript" src="http://localhost:8888/RemoteServer/RemoteRequetHandler?callback=callback"></script>
src 引入的是由后台servlet生成的内容,后台servlet代码如下:
String callbackName=request.getParameter("callback"); response.setContentType("text/javascript; charset=utf-8"); response.setStatus(200); PrintWriter pw=response.getWriter(); pw.write(callbackName+"({\"name\":\"remote call\"});"); pw.close();
这样执行哪个方法由前台的callback参数指定,而传入这个要执行的方法的内容由后台决定【传入的内容是一个json对象,或者是一个普通的string并不重要】。这就是JSONP。
JSONP的原理就是利用了script标签可以加载外部js文件的特性。
二 jquery使用JSONP
$.ajax({ url : "http://localhost:8888/RemoteServer/RemoteRequetHandler", cache : false, type : "GET", dataType:"jsonp", success : function(data) { alert(JSON.stringify(data)); } });
当指定dataType为jsonp是,jquery会自动在url后边添加callback=?,当请求返回是会执行success指定的方法。
相关推荐
在页面a中由前端发送一个jsonp请求到客户方,得到一个token值 前端得到token值后向自己后端发送一个请求,后端根据token去redis(token的值就是redis里的key)里取值(key=token的值,value=用户信息等)判断用户是否已...
JSONP简单调用实例。ASP.NET和纯HTML。jQuery的$.ajax的调用!jsonP说白了,就是在json字符串外面包上一个:参数名称+左右括弧!只是包了个:jsonpCallback() 而已! 相关文章:...
解决跨域封装的jsonp
前端使用jquery,datatype采用jsonp,服务端采用C#编写的webService
基于ajax方式的跨域请求jsonp的前后台代码
该资源为ASP.NET网站开发技术中使用Ajax进行跨域请求时利用JSONP方案解决浏览器同源策略限制的源码,比较简单,仅供参考
jsonp的原理 jsonp的使用,使用jsonp解决js跨域问题!
使用JSONP完成HTTP和HTTPS之间的跨域访问
总算理解jsonp的应用了,以前只知道jsonp但是还是不会再代码中应用,看了这个以后突然恍然大悟,妈妈再也不用担心我学不会jsonp了(/坏笑,以上纯属虚构)
后台php设置jsonp
7、为了便于客户端使用数据,逐渐形成了一种非正式传输协议,人们把它称作JSONP,该协议的一个要点就是允许用户传递一个callback参数给服务端,然后服务端返回数据时会将这个callback参数作为函数名来包裹住JSON...
JSONP(JSON with Padding)是JSON的一种“使用模式”,可用于解决主流浏览器的跨域数据访问的问题。由于同源策略,一般来说位于 server1.example.com 的网页无法与不是 server1.example.com的服务器沟通,而 HTML 的...
纯servlet实现JSONP 非常简单易懂的一个例子。
Jsonp和java操作
ajax jsonp跨域传参,里面有源码,不过写在txt中了,很适合调用别人的接口
对应我的文章json和jsonp格式数据返回
Jquery easyui+Jsonp+asp.net+翻页 事件版
使用jsonp跨域获取json数据。Ajax获取JAVA服务器json数据。
html通过 ajax jsonp跨域请求接收和传送数据 使用HTML页面与后台跨域交互,获得后台数据或传输数据给后台
封装好的jsonp.js