服务器代码
//1. 导入 http 模块
const express = require('express');
const app = express();
app.get('/', (req, res) => {
let { wd, callback } = req.query;
res.send(`${callback}({ "name": "gpc" })`)
});
//3. 开启服务器
app.listen(3000, () => {
console.log('Server is running...');
});
前端代码
//写一个jsonp的实现,前后
function jsonp(url, fn) {
//路径和回调函数
//cbName是自己随便起的名字,这个名字用来接收回调函数
const cbName = 'cb' + Math.random().toString().replace('.', '');
//路径拼接回调函数的名字
url += '&callback=' + cbName;
//创建script标签
let script = document.createElement('script');
//设置src
script.src = url;
//window下取这个名字,拿回调函数接收值
window[cbName] = cdData => {
//cbData 这个值在这里就拿到了
fn(cdData);
//接收完了,就移除并且置为空 提升性能
document.body.removeChild(script);
window[cbName] = null;
}
//把创建好的script标签添加到body里面
document.body.appendChild(script);
}
//利用百度实现jsonp
// const url = 'https://m.baidu.com/sugrec?prod=wise&wd=' + '搜索关键字'
//这个地址是自己本地node写的服务器
const url = 'http://localhost:3000?wd=gpc'
// 执行jsonp的函数,传入地址和接收值的回调函数,
jsonp(url, data => {
console.log(data);
})