最近做一个项目需要在客户端去第三方供应商服务器获取数据,第一想到的方法就是通过ajax的方式发送请求获取数据。由于我们的系统和第三方系统不在一个域,因此通过ajax发送请求就碰到了跨域的问题。
在网上查找了一些方法,发现一般解决跨域问题就是两种方式:一是通过ajax在服务端通过代理的方式实现;二是通过jsonp的方式。
经过两种方式比较,最终选择了第二种方式实现了跨域请求。下面结合本次需求的经历简单总结一下JSONP的方式。
我们都知道ajax直接请求普通文件都存在跨域无权限访问的问题,但是Web页面上调用JS文件不受是否跨域的影响,于是就可以想象到,如果在远程服务器端设法将数据装进JS格式的文件里,那么客户端就可以获取到,并不受跨域的影响。这就是JSONP基本的实现原理。
下面举例说明:
1、本地有一个html文件a.html
varlocalHandler= function(data){
alert('我是本地函数,可以被跨域的b.js文件调用,远程js带来的数据是:' +data.result);
};