如何通过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
相关产品推荐
相关产品推荐

