You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用JavaScript读取指定比特币手续费API?现有JSONP代码失效求助

解决JavaScript请求比特币手续费API的问题

嘿,我来帮你搞定这个问题!你的JSONP代码没法正常工作,核心原因是这个API根本不支持JSONP格式——它返回的是标准纯JSON数据,而JSONP要求服务器返回“函数调用包裹JSON”的特殊格式,所以浏览器没法处理返回的内容,自然不会触发你的gotData函数。

下面是两种可行的解决方案,都是基于标准的AJAX请求(这个API允许跨域请求,所以不用担心CORS问题):

方法一:使用现代浏览器推荐的Fetch API

这是目前最简洁的方式,代码可读性高,支持Promise:

// 请求API并处理数据
fetch('https://bitcoinfees.earn.com/api/v1/fees/recommended')
  .then(response => {
    // 先验证响应状态是否成功
    if (!response.ok) {
      throw new Error(`请求失败,状态码: ${response.status}`);
    }
    return response.json(); // 解析返回的JSON数据
  })
  .then(data => {
    console.log('获取到的手续费数据:', data);
    // 你可以在这里处理具体字段,比如最快手续费:data.fastestFee
  })
  .catch(error => {
    console.error('请求过程出错:', error);
  });

方法二:使用兼容旧浏览器的XMLHttpRequest

如果你需要兼容更老的浏览器(比如IE11),可以用这个传统方法:

const xhr = new XMLHttpRequest();
// 初始化GET请求
xhr.open('GET', 'https://bitcoinfees.earn.com/api/v1/fees/recommended', true);

// 请求成功后的处理
xhr.onload = function() {
  if (xhr.status >= 200 && xhr.status < 300) {
    const data = JSON.parse(xhr.responseText);
    console.log('获取到的手续费数据:', data);
  } else {
    console.error('请求失败,状态码:', xhr.status);
  }
};

// 网络错误处理
xhr.onerror = function() {
  console.error('网络请求发生错误');
};

// 发送请求
xhr.send();

额外说明

  • 为什么JSONP不行:你可以打开浏览器开发者工具(F12)的「Network」标签,查看这个API的返回内容——它是纯JSON(比如{"fastestFee": 20, "halfHourFee": 15, ...}),完全没有JSONP要求的函数包裹格式,所以你的loadJSON用jsonp参数请求时,浏览器无法识别回调,也就不会执行gotData。
  • 关于CORS:这个API的响应头包含Access-Control-Allow-Origin: *,允许所有域名跨域请求,所以你不需要额外处理跨域问题,直接用标准AJAX方法就能拿到数据。

内容的提问来源于stack exchange,提问作者Jonas

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 07:39:44