jsonp 的例子

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>jsonp 跨域</title>
</head>
<body>
<script>
function succ(data) {
console.log(data)
//Object
// p: false
// q: "s"
// s: Array(10)
// 0: "双色球开奖结果"
// 1: "sk-ll"
// 2: "双色球"
// 3: "圣墟"
// 4: "switch"
// 5: "顺丰快递单号查询"
// 6: "神级龙卫"
// 7: "沈浪与苏若雪最新章节更新"
// 8: "申通快递单号查询"
// 9: "soul"
// length: 10
// __proto__: Array(0)
// __proto__: Object
}
</script>
<script src="http://suggestion.baidu.com/su?wd=S&p=3&cb=succ&from=superpage"> </script>
</body>
</html>

jsonp  的原理:

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
</head>
<body>
<script>
function jsonp({url,params,cb}) {
//返回一个promise 的目的是 为了 下面的 then 函数返回数据
return new Promise((resolve,reject)=>{
//创建script
let script = document.createElement('script');
// 声明方法
window[cb]= function (data) {
resolve(data);
//得到数据移除script 标签
document.body.remove(script)
}
//合并参数
params = {...params,cb};
let arrs = [];
//遍历数组 将 wd=S ,cb=succ 以这种形式添加到数组中
for(let key in params ) {
arrs.push(`${key}=${params[key]}`)
}
//链接script
script.src = `${url}?${arrs.join('&')}`;
//添加到body 中
document.body.appendChild(script)
})
}
jsonp({
url:'http://suggestion.baidu.com/su?wd=S&cb=succ',
params:{
wd:'b'
},
cb:'succ'
}).then(data=>{
console.log(data);
// {q: "s", p: false, s: Array(10)}
// p: false
// q: "s"
// s: (10) ["双色球开奖结果", "sk-ll", "双色球", "圣墟", "switch", "顺丰快递单号查询", "神级龙卫", "沈浪与苏若雪最新章节更新", "申通快递单号查询", "soul"]
// __proto__: Object
})
</script>
</body>
</html>

输出:

jsonp 只能处理get  请求

最新文章

  1. VS中的路径宏 vc++中OutDir、ProjectDir、SolutionDir各种路径
  2. linux shell脚本通过参数名传递参数值
  3. 基于CentOS与VmwareStation10搭建Oracle11G RAC 64集群环境:2.搭建环境-2.4. 安装JDK
  4. [转]Angular, Backbone, or Ember: Which is Best for your Build?
  5. ZOJ 3741 Eternal Reality
  6. HTML5入门(一)—— 基本标签&amp;表格
  7. javascript 之异常处理try catch finally--05
  8. 出错信息:Incorrect string value: &#39;\xE4\xBD\xA0\xE5\xA5\xBD&#39; for column &#39;username&#39;
  9. RabbitMQ消息队列(七):适用于云计算集群的远程调用(RPC)
  10. Undoing Merges
  11. Django 系列博客(四)
  12. K8s之配置文件kubeconfig生成
  13. A股ROE连续3年超过15%的股票排名
  14. 分组,命名分组,url的命名和反向解析
  15. Mishka and Divisors CodeForces - 703E
  16. Python3 os模块应用
  17. TCP BBR - 如何安装、启动、停止BBR!
  18. 新浪行情 vb代码
  19. 《C++ Primer Plus》14.3 多重继承 学习笔记
  20. ActiveStorage Overview --Rails guide (history:7-1更新)

热门文章

  1. iOS 图表工具charts之PieChartView
  2. iOS 图表工具charts介绍
  3. netfilter/iptables 防火墙
  4. Selenium 2自动化测试实战21【调用JavaScript(控制浏览器的滚动条)】
  5. nagios配置邮件告警
  6. 在DBGrid中,按ctrl+Delete不让删除,怎么实现
  7. jQuery 获得内容
  8. 【神经网络与深度学习】Caffe使用step by step:caffe框架下的基本操作和分析
  9. 在CentOS 8 Linux中安装使用Cockpit服务器管理软件
  10. Linux下面MariaDB 管理命令基础使用