【背景】

axios 本身不支持 jsonp 这种 dataType(不同于 ajax)

【解决方法】

自行封装一个 jsonp 调用方法:

function jsonp (url) {
  return new Promise((resolve, reject) => {
    // 这里的 "jsonCallBack" ,和调用的 jsonp 的 url 中的 callback 值相对应
    window.jsonCallBack =(res) => {
      resolve(res)
    }
    const JSONP = document.createElement('script');
    JSONP.type = 'text/javascript';
    JSONP.src = url;
    document.getElementsByTagName('head')[0].appendChild(JSONP);
    setTimeout(() => {
        document.getElementsByTagName('head')[0].removeChild(JSONP)
    },500)
  })
}

调用示例:

let res = await jsonp(`https://apis.map.qq.com/ws/geocoder/v1/?location=${evt.latLng.lat},${evt.latLng.lng}&get_poi=1&callback=jsonCallBack&output=jsonp`)
console.log(res)

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐