实现
function jsonp(url, params = {}, cbName, cb) {params.callback = cbName;window[cbName] = cb;const keys = Object.keys(params);const paramStr = keys.map(key => `${key}=${params[key]}`).join('&');const script = document.createElement('script');script.setAttribute('src', `${url}?${paramStr}`);documnet.appendChild(script);}
调用方式
jsonp('http://test.com',{ name: 'lin' },'cb',function(ret) {console.log(ret);})
- 优缺点
优点:
- 实现简单
- 兼容性非常好
缺点:
- 只支持get请求(因为
<script>标签只能 get ) - 有安全性问题,容易遭受 xss 攻击
- 需要服务端配合 jsonp 进行一定程度的改造
