原生jsonp和jQuery发送jsonp的方式出入比较大,所以想在这里记录一下jQuery发送jsonp请求的方式~~
文字版:
使用jQuery发送jsonp请求,主要使用jQuery函数的getJSON()方法,$.getJSON()。
需要传两个参数,第一个参数是url,需要添加url参数callback=?(固定写法),浏览器在发送请求时会自动为?赋值,这个值可以在后台接收,后台接收之后会将它作为函数调用的函数,接收方式会在稍后以实例说明。
;第二个参数是回调函数,指定形参(实参是后台响应的数据,是个json对象/数组),可以在函数体内部对响应数据进行处理
实例:
需求:点击发送jsonp请求按钮,后台响应的数据在div中显示
html:
<button>点击发送 jsonp 请求</button>
<div id="result"></div>
JS:
<script src="../../bootstrap/js/jquery.min.js"></script>
<script>
$('button').click(function(){
$.getJSON('http://127.0.0.1:8000/jquery-jsonp-server?callback=?', function(data){
$('#result').html('name: ' + data.name + '<br>' + 'age: ' + data.age)
})
})
</script>
服务器:接收callback的值的方式request.query.callback
//jQuery-jsonp 服务
app.all('/jquery-jsonp-server' , (request , response)=>{
const data = {
name: 'Tom',
age: 20
}
var str = JSON.stringify(data)
//接收callback参数
var cb = request.query.callback
response.end(`${cb}(${str})`)
})