axios实现jsonp请求
时间: 2023-08-17 11:08:56 浏览: 103
详解如何在Vue项目中发送jsonp请求
要使用axios实现jsonp请求,你需要进行一些额外的步骤。由于axios本身不支持jsonp,你可以通过创建一个动态的script标签来实现。
下面是一个示例代码:
```javascript
function jsonp(url, callback) {
// 创建一个随机的回调函数名称
const callbackName = 'jsonp_' + Math.random().toString(36).substr(2);
// 将回调函数名称作为参数添加到请求URL中
url += (url.indexOf('?') === -1 ? '?' : '&') + 'callback=' + callbackName;
// 创建一个script标签
const script = document.createElement('script');
script.src = url;
// 将script标签添加到页面中
document.body.appendChild(script);
// 定义回调函数
window[callbackName] = function(data) {
// 调用传入的回调函数,并传入获取到的数据
callback(data);
// 请求完成后移除script标签
document.body.removeChild(script);
// 删除全局的回调函数
delete window[callbackName];
};
}
// 使用示例
jsonp('http://example.com/api?param1=value1¶m2=value2', function(data) {
console.log(data);
});
```
这段代码创建了一个名为`jsonp`的函数,该函数接受两个参数:URL和回调函数。它会生成一个随机的回调函数名称,并将其作为参数添加到请求URL中。然后,它使用动态创建的script标签发送请求,并在请求完成后调用传入的回调函数。最后,它会移除script标签和全局的回调函数。
请注意,这种方法仅适用于GET请求,并且需要服务器返回一个调用回调函数的响应。确保服务器正确处理jsonp请求并返回有效的数据。
阅读全文