Ajax跨域 JSONP 原理
-
JSONP 是实现跨域数据请求的一种技术解决方案(非官方)。
- 支持 GET 请求
- 不支持 POST、DELETE 等其它请求
-
不是Ajax请求,没有用到XMLHttpRequest 对象
原理——————利用异步原理,函数调用获得数据
- 将服务器返回值设为
函数调用
// 先准备一个函数
function show(data){
console.log(data) // 调用后得到的数据
}
// 请求携带参数
const callback = show
const num = 1000 // 动态数值
// 创建一个script标签
const script =documnet.createElement('script')
// 在标签中插入 src属性(数据拼接)
script.src=`http://192.168.72.246/get?callback=${callback}&num=${num}`
// 解析:将声明的函数的函数名通过拼接的方式,将函数名发过去
// 将script标签 追加到body标签中
document.body.appendChild(script)
show() // 获取返回数据
总结: 动态创建script标签,给script标签添加src属性,它会发送异步请求,数据请求过去后服务器端会响应回来,由于响应的数据是异步无法直接获取;获取数据需要在当前页面声明一个函数,并且从服务器端发送回来的得是一个函数调用,再利用函数异步获取数据。