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

使用Fixer汇率API时JQuery无法获取指定汇率,拼接输入失效求助

问题分析与修正方案

让我帮你拆解下代码里的几个关键错误,其实核心是对API返回结构和jQuery Ajax回调参数的理解出现了偏差:

1. 回调参数命名与结构理解错误

Fixer API返回的是一个完整的JSON对象,结构大概是这样的:

{
  "base": "USD",
  "date": "2024-05-20",
  "rates": {
    "JPY": 151.23,
    "EUR": 0.92,
    "GBP": 0.79
  }
}

你把success回调的参数命名为rates,但这个参数其实是整个响应对象,不是里面的rates子属性。这就导致你后续的$.each循环遍历的是base、date、rates这三个顶级键,而不是实际的汇率数据。

2. 错误的判断逻辑与属性获取方式

你的if(exchangeRates+"."+ "JPY")完全是无效逻辑:这只是把当前循环的value和字符串拼接成一个非空字符串,在JavaScript里非空字符串永远会被判定为true,所以这个判断根本起不到筛选作用。而且你试图用字符串拼接的方式获取对象属性,这完全不是正确的做法——获取对象属性应该用.或者[]语法,比如exchangeRates.JPY或者exchangeRates["JPY"]。

3. 冗余的循环操作

如果你只是想获取USD对JPY的汇率,根本不需要用$.each循环遍历所有数据,直接访问响应对象里的rates.JPY就可以了,非常高效。


修正后的代码

方案1:直接获取特定货币(JPY)的汇率

var link1 = "https://api.fixer.io/latest?base=USD";
$.ajax({ 
  type: "GET", 
  url: link1, 
  success: function(response) { 
    // 直接访问rates对象下的JPY属性
    var usdToJpyRate = response.rates.JPY;
    if (usdToJpyRate) {
      console.log("USD兑换JPY的汇率:", usdToJpyRate);
    } else {
      console.log("无法获取JPY的汇率数据");
    }
  },
  // 建议加上错误回调,方便排查请求问题
  error: function(xhr, status, error) {
    console.log("API请求出错:", error);
  }
});

方案2:遍历所有汇率并单独处理JPY

如果需要遍历所有汇率同时单独处理JPY,可以这样写:

var link1 = "https://api.fixer.io/latest?base=USD";
$.ajax({ 
  type: "GET", 
  url: link1, 
  success: function(response) { 
    // 遍历rates对象里的所有键值对(货币代码:汇率)
    $.each(response.rates, function(currencyCode, rate) { 
      console.log(`${currencyCode}汇率:${rate}`);
      // 单独处理JPY的情况
      if (currencyCode === "JPY") {
        console.log("USD兑换JPY的汇率:", rate);
      }
    }); 
  },
  error: function(xhr, status, error) {
    console.log("API请求出错:", error);
  }
});

小提示

你可以先在浏览器地址栏直接访问https://api.fixer.io/latest?base=USD,查看返回的JSON结构,这样能更直观地理解如何提取数据。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 04:49:46