JSONP,是JSON with padding的缩写,意为填充式JSON或参数式JSON,是对JSON的一种新的应用,主要用于跨域,其原理是通过动态的创建script标签,并为其src属性指定一个跨域的URL,这里的script标签与img标签一样,都有能力不受限制的从其他域加载资源。因为JSONP是有效的js代码,所以在请求完成后,即在JSONP响应加载到页面中以后,就会立即执行;JSONP更像是一个被包含在函数调用中的JSON,形式如下:
callback({name:"kk"});
JSONP由两部分组成:回到函数和数据。回调函数是指当响应到来时调用的函数,回调函数的名字一般是在请求中指定的。而数据就是指传入回调函数中的JSON数据。代码示例:
<body>
<div id="box">
<button id="btn">CLICK</button>
</div>
<script>
function localFn(res) {
console.log(res);
};
var btn = document.getElementById('btn');
btn.onclick = function () {
var script = document.createElement('script');
script.src = "https://api.douban.com/v2/book/search?q=javascript&count=1&callback=localFn";
document.body.insertBefore(script, document.body.firstChild);
}
</script>
</body>
使用JSONP进行跨域的优点是简单易用,缺点是(1)安全性不高;(2)要确定请求是否失败并不容易;
代码小兵49806-11 15:28
代码小兵49806-11 15:51
代码小兵49806-11 16:22
代码小兵51603-29 17:28
暴风城-小飞04-06 20:49