JSONP 是一种无需考虑跨域问题即可传送 JSON 数据的方法。
JSONP 不使用 XMLHttpRequest 对象。
JSONP 使用 <script> 标签取而代之。
由于同源策略,从另一个域中请求文件会遇到问题,jsonp就是一种可以突破限制,实现跨域的方式。
原理:Web页面上调用js文件时则不受是否跨域的影响,不仅如此,我们还发现凡是拥有”src”这个属性的标签都拥有跨域的能力,比如<\script>、<\img>、<\iframe>。
JSONP 利用了这个优势,并使用 script 标签替代 XMLHttpRequest 对象。
例如:<script src="demo_jsonp.php">
ajax使用jsonp的形式
$.ajax({
url:'http://localhost:8080/g',
type:'post',
data:{'f':'f'},
dataType: "jsonp",
jsonp: "callback",//传递给请求处理程序或页面的,用以获得jsonp回调函数名的参数名(一般默认为:callback)
jsonpCallback:"showData",//自定义的jsonp回调函数名称,默认为jQuery自动生成的随机函数名,也可以不写这个参数,jQuery会自动为你处理数据
success: function(data){
console.log(data);
},
或者jsonp自己使用
import JsonP from 'jsonp'
static jsonp(options) {
return new Promise((resolve, reject) => {
JsonP(options.url, {
param: 'callback'
}, function (err, response) {
if (response.status == 'success') {
resolve(response);
} else {
reject(response.messsage);
}
})
})
}
网友评论