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

如何通过Ajax解析Stocks Exchange API中指定market_name的数据?

解决方案:筛选Stocks Exchange API中指定market_name的完整数据

嘿,我来帮你搞定这个问题!你之前的Ajax只能拿到last字段,核心原因是没对API返回的数组做筛选——这个接口返回的是所有交易对的完整数据数组,你需要先定位到对应market_name(比如ETH_BTC)的那一项,才能获取它的所有字段信息。

下面给你两种常用的实现方案,你可以根据自己的项目环境选择:

方案1:使用jQuery Ajax

如果你项目里已经在用jQuery,直接用这个写法:

// 定义你要筛选的交易对名称
const targetMarketName = 'ETH_BTC';

$.ajax({
  url: 'https://stocks.exchange/api2/ticker',
  method: 'GET',
  dataType: 'json',
  success: function(allMarketsData) {
    // 从所有交易对中筛选出匹配的项
    // 用find()更高效,因为一个market_name只会对应一个交易对
    const matchedMarket = allMarketsData.find(item => item.market_name === targetMarketName);
    
    if (matchedMarket) {
      // 拿到完整数据后,你可以访问任意字段
      console.log('筛选后的完整交易对数据:', matchedMarket);
      console.log('最新价格:', matchedMarket.last);
      console.log('24小时最高价:', matchedMarket.high);
      console.log('24小时最低价:', matchedMarket.low);
      console.log('24小时成交量:', matchedMarket.volume);
      console.log('买一价:', matchedMarket.bid);
      console.log('卖一价:', matchedMarket.ask);
    } else {
      console.log('未找到指定的交易对,请检查market_name是否正确');
    }
  },
  error: function(xhr, status, err) {
    console.error('请求API失败:', err);
  }
});

方案2:使用原生JavaScript Fetch API

如果项目没用到jQuery,用原生Fetch更轻量:

const targetMarketName = 'ETH_BTC';

fetch('https://stocks.exchange/api2/ticker')
  .then(response => {
    if (!response.ok) {
      throw new Error(`请求失败,状态码:${response.status}`);
    }
    return response.json();
  })
  .then(allMarketsData => {
    const matchedMarket = allMarketsData.find(item => item.market_name === targetMarketName);
    
    if (matchedMarket) {
      console.log('完整交易对信息:', matchedMarket);
      // 按需使用字段,比如渲染到页面
      // document.getElementById('last-price').textContent = matchedMarket.last;
    } else {
      console.log('未找到该交易对');
    }
  })
  .catch(err => {
    console.error('请求出错:', err);
  });

关键知识点说明

  • API返回结构:这个接口返回的是一个数组,每个元素都是一个交易对的完整数据对象,包含market_name、last、high等十几个字段。
  • 筛选方法:用find()代替filter()更高效,因为每个market_name是唯一的,find()找到第一个匹配项就会停止遍历;如果用filter()会返回一个包含匹配项的数组,你需要取[0]来拿到具体对象。
  • 容错处理:一定要加判断,避免找不到交易对时出现报错;同时处理请求失败的情况,比如网络问题或API服务异常。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 08:48:43