1:Jsonp说白了就是用来跨域取值
2:为什么要跨域取值
同源策略:首先基于安全的原因,浏览器是存在同源策略这个机制的,同源策略阻止从一个源加载的文档或脚本获取或设置另一个源加载的文档的属性
3:<script>标签具有跨域的能力
jsonp就是利用此特性进行跨域取值(要注意的是服务端在返回数据的时候是不能返回json格式的,必须按照既定的格式去返回)
4:既定是返回格式(java):
String callback = request.getParameter("callback");
return callback+ "(" + jsonStr + ")" // 将需要的数据放在括号里面
这里的callback相当于function函数名
利用<script>的跨域能力,就相当于远程调用了个函数一样,所以我们候初次用的jsonp服务端直接返回json格式的数据是会报错的。因为json合适返回到客户端,是识别不出来的。
5:利用Jquery来实现跨域
$.ajax({
url: 'http://xxxxxxxx',
type: 'GET',
dataType: 'jsonp',
jsonp:'callbacka',//传递给请求处理程序或页面的,用以获得jsonp回调函数名的参数名(默认为:callback)
jsonpCallback:"success_jsonpCallback",//自定义的jsonp回调函数名称,默认为jQuery自动生成的随机函数名
success: function (result) {
console.log(result)
}
});
6:jsonp可以做什么呢?
jsonp用的最多的可能是SSO单点登录,跨越获取token等信息