jsonp概念
为了便于客户端使用数据,逐渐形成了一种非正式传输协议,人们把它称为JSONP,该协议一个要点就是允许用户传递一个callback参数给服务端,然后服务器返回数据时callback参数作为函数来包裹住json数据,这样客户端就可以随意定制自己的函数来自动处理返回的数据
案例
客户端代码
<!DOCTYPE html>
<html>
<head>
<title><%= title %></title>
<!-- <link rel='stylesheet' href='/stylesheets/style.css' /> -->
</head>
<body>
<h1><%= title %></h1>
<p>Welcome to <%= title %></p>
</body>
<script>
function getDate(msg){
console.log(msg);
}
</script>
<script src="http://127.0.0.1:9999/list?callback=getDate">
</script>
</html>
服务端代码
var express = require('express');
var router = express.Router();
/* GET home page. */
router.get('/', function(req, res, next) {
res.render('index', { title: 'Express' });
});
router.get('/list',function(req,res){
res.jsonp({'users':['甄嬛','如懿']})
})
module.exports = router;
原理
jsonp的原理很简单,就是利用了script标签可以跨域请求这一特点,前端把方法作为参数传到服务端,然后服务端将数据作为方法的入参返回给前端,这样就能实现前后端通信。
|