JSONP 原理

207 阅读1分钟

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属性,它会发送异步请求,数据请求过去后服务器端会响应回来,由于响应的数据是异步无法直接获取;获取数据需要在当前页面声明一个函数,并且从服务器端发送回来的得是一个函数调用,再利用函数异步获取数据。