使用axios发送jsonp请求
JSONP(JSON with Padding)是一种跨域请求数据的方式,可以用来解决AJAX直接请求其他域名下资源的问题。但是,axios默认不支持JSONP,要使用axios发送JSONP请求,需要借助某些插件或者自己封装一个。
以下是一个封装JSONP请求的简单示例:
function jsonp(url, jsonpCallback) {
// 生成随机回调函数名
const callbackName = `jsonp_callback_${Math.random().toString(36).substring(7)}`;
// 创建script标签
const script = document.createElement('script');
script.src = `${url}?callback=${encodeURIComponent(callbackName)}`;
// 设置回调函数
window[callbackName] = function(data) {
jsonpCallback(data);
document.body.removeChild(script); // 请求完成后移除script标签
delete window[callbackName]; // 清除回调函数
};
document.body.appendChild(script); // 添加到DOM中
}
// 使用封装的jsonp函数
jsonp('https://example.com/api/data', function(data) {
console.log(data); // 处理数据
});
在实际项目中,你可能会使用像jsonp
这样的库来简化JSONP请求的过程。记住,由于安全原因,不是所有的API都支持JSONP,并且使用JSONP会有一些限制,例如不能发送POST请求等。
评论已关闭