使用jQuery调用CoinMarketCap API展示特定代币数据遇问题求助
排查你的Spectrecoin API请求问题
我帮你梳理下代码里的几个关键问题,一个个来解决:
1. CoinMarketCap v1 API已废弃
你用的https://api.coinmarketcap.com/v1/ticker/spectrecoin/这个API早就停止服务了,现在官方用的是v3版本的API,而且必须使用API密钥才能发起请求。这是你完全得不到响应的核心原因——请求的地址已经不存在了。
2. 循环逻辑错误
就算API能正常返回数据,你的循环条件for (var i = 0; i < data.length - 1; i++)也有问题:当请求单个代币时,API返回的数组里只会有1个元素(data.length = 1),那i < 0的条件永远不成立,循环根本不会执行,自然没法更新页面上的排名和价格内容。
3. jQuery加载顺序问题
你把jQuery的<script>标签放在了JS代码的后面,这会导致执行$.get的时候jQuery还没加载完成,浏览器控制台应该会报$ is not defined的错误。
修复后的代码思路
如果要改用官方的v3 API,你需要先去CoinMarketCap官网申请免费的API密钥,然后调整请求方式。这里给你一个基础的修复示例(假设你已经拿到了API密钥):
<!-- 先加载jQuery,确保先于业务JS执行 --> <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.7.1/jquery.min.js"></script> <script> var apiKey = "你的API密钥"; var coinSlug = "spectrecoin"; $.ajax({ url: `https://pro-api.coinmarketcap.com/v1/cryptocurrency/quotes/latest`, method: "GET", headers: { "X-CMC_PRO_API_KEY": apiKey }, data: { slug: coinSlug, convert: "USD" }, success: function(response) { // 单个代币数据会嵌套在data对象里,取第一个键对应的数据即可 var coinData = response.data[Object.keys(response.data)[0]]; $("#rank").text(coinData.cmc_rank); $("#price").text(coinData.quote.USD.price.toFixed(6)); // 保留6位小数提升可读性 }, error: function(xhr, status, error) { // 调试时查看错误信息 console.log("请求出错:", error); console.log("状态码:", xhr.status); } }); </script> <table> <tr> <th>排名</th> <th>Coin Price (USD)</th> </tr> <tr> <td id="rank"></td> <td id="price"></td> </tr> </table>
额外调试提示
- 免费版API有请求次数限制,注意不要超过配额
- 调试时一定要打开浏览器开发者工具(F12),查看「网络」标签里的请求状态,以及「控制台」里的报错信息,这是排查这类问题最快的方式
内容的提问来源于stack exchange,提问作者Anton
相关产品推荐
相关产品推荐

