JSONP接口
- JSONP的概念和特点
概念:浏览器通过
- JSONP不属于真正的Ajax请求,因为它没有使用XMLHttpRequest这个对象。
- JSONP仅支持GET请求,不支持POST、PUT、DELETE等请求。
- 创建JSONP接口注意事项
如果项目中已经配置了CORS跨域资源共享,为了防止冲突,必须在配置CORS中间件之前声明JSONP接口。否则JSONP接口会被处理成开启了CORS的接口。示例代码如下:
app.get('/api/jsonp',(req,res)=>{})
app.use(cors())
app.get('./api/get',(req,res)=>{})
- 实现JSONP接口的步骤
- 获取客户端发送过来的回调函数的名字
- 得到要通过JSONP形式发送给客户端的数据
- 根据前两步得到的数据,拼接出一个函数调用的字符串
- 把上一步拼接得到的字符串,响应给客户端的
- 实现JSONP接口的具体代码
app.get('/api/jsonp',(req,res)=>{
const funcName=req.query.callback
const data={ name:'zs',age:22 }
const scriptStr=`${funcName}(${JSON.stringify(data)})`
res.send(scriptStr)
})
- 在网页中使用jQuery发起JSONP请求
调用$.ajax()函数,提供JSONP的配置选项,从而发起JSONP请求,示例代码如下:
$('#btnJSONP').on('click',function(){
$.ajax({
method:'GET',
url:'http://127.0.0.1/api/jsonp',
dataType:'jsonp',
success:function(res){
console.log(res)
}
})
})