技术积累-名词解释

jsonp

JSONP(JSON with Padding)是JSON的一种使用模式,可用于解决主流浏览器的跨域数据访问的问题

由于同源策略,一般来说位于 localserver.com 的网页无法与不是 remoteserver.com的服务器沟通,但利用 <script> 元素的开放策略,网页可以得到从其他来源动态产生的 JSON 资料,而这种使用模式就是所谓的 JSONP。用 JSONP 抓到的资料并不是 JSON,而是任意的JavaScript,返回后用 JavaScript 直译器执行

1
2
3
4
5
6
7
8
9
10
11
12
13
<html>
<head>
<title></title>
<script type="text/javascript">
var localHandler = function(data){
alert('我是本地函数,可以被跨域的remote.js文件调用,远程js带来的数据是:' + data.result);
};
</script>
<script type="text/javascript" src="http://remoteserver.com/remote.js?code=CA198&callback=localHandler"></script>
</head>
<body>
</body>
</html>

通过上面的src="http://remoteserver.com/remote.js?code=CA198&callback=localHandler" 即可实现调用返回,返回的数据对应着本地 js方法localHandler 调用同时将数据传入本地回调方法,这样就能实现 跨域 api 调用了

1
2
3
4
5
localHandler({
"code": "CA1998",
"price": 1780,
"name": "demo"
})