一、什么是jsonp?
jsonp是json的一种“使用模式”,可用于解决主流浏览器的跨域数据访问的问题。
二、跨源
跨源请求原理:
【注】ajax默认是同源策略,禁止跨源请求数据。
解决跨源请求数据的方法:
1、直接修改ajax请求头 设置可以跨源(此方法不安全)。
2、可以用php文件作为中转站(间接跨源)。
3、JSONP跨域
三、JSONP
1、JSONP跨域问题:
A、JSONP跨域就是通过src这个属性实现的跨源。
B、src这个属性没有同源限制。
例:通过src属性引入了1.txt,最终1.txt里面所有的数据,就相当于写在了这个页面上。
<script>
function func(data){
alert("下载的数据:" + data);
}
</script>
<script src = '1.txt'></script>
运行结果:
四、JSONP动态下载数据
JSONP具体操作:
1)、封装一个函数,这个函数有一个参数,参数就是我们下载到的数据
2)、当需要下载数据的时候动态的创建script标签,添加到页面上
3)、当script添加页面上以后,就调用第一步声明好的函数,我们在这个函数里,对下载到的数据进行处理
<script>
function func(data){
alert("下载到的数据是:" + data);
}
</script>
<script>
window.onload = function(){
var oBtn = document.getElementById("btn");
oBtn.onclick = function(){
var oScript = document.createElement("script");
oScript.src = "1.txt";
document.body.appendChild(oScript);
}
}
</script>
运行结果: