首页 > Web开发 > 详细

jsonp的使用

时间:2019-12-26 23:00:58      阅读:100      评论:0      收藏:0      [点我收藏+]

看见高德地图使用异步加载方式是jsonp。来试一试jsonp

技术分享图片

1.用express起一个后台

// server.js 
// node server.js 启动服务
const express = require(‘express‘) const app = express() app.listen(7879, () => console.log(‘app is listen on port 7879‘)) app.get(‘/‘, (req, res) => { res.set(‘Access-Control-Allow-Origin‘, ‘*‘) // 跨域 res.send(‘init‘) })

 2.fetch请求接口

这时不设置res.set(‘Access-Control-Allow-Origin‘, ‘*‘) ,浏览器会提示跨域错误

设置之后打印 ‘init’

// jsonp.html
<!
DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Document</title> </head> <body> <script> fetch(http://localhost:7879/) .then(res =>{ return res.text() }) .then(res => { console.log(res) // 打印init }) </script> </body> </html>

3.用<script src="http://localhost:7879"></script>脚本方式请求

请求后浏览器提示

 

 

 技术分享图片

 

 

返回的init直接运行了。

在请求脚本之前定义一个init的变量就不会报错了,如果返回 init() 呢?

script是从上到下顺序执行的,所以变量定义在前面

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
  // <script>
  //  var init = 1
  // </script>
<script src="http://localhost:7879"></script> </head> <body> // <script>
 //  init
 // </script> </body> </html>

4.返回init()时

const express = require(‘express‘)

const app = express()

app.listen(7879, () => console.log(‘app is listen on port 7879‘))

app.get(‘/‘, (req, res) => {
    // res.set(‘Access-Control-Allow-Origin‘, ‘*‘)
    res.send(‘init()‘)
})

 

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <script>
        function init() {
            console.log(init执行)
        }
    </script>
    <script src="http://localhost:7879"></script> // img,script请求都没有跨域的问题
</head>
<body>
    
</body>
</html>

打开html页面,浏览器打印了:

技术分享图片

 

 后台返回init(),直接执行了。

我们也可以在返回init()时添加参数,比如init(‘params‘)。

 

jsonp的使用

原文:https://www.cnblogs.com/liufulin/p/12104773.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!