【问题标题】:Two seperate .getjson calls returning NAN, how to fix it?两个单独的 .getjson 调用返回 NAN,如何解决?
【发布时间】:2018-07-03 06:51:21
【问题描述】:

按照教程,我可以使用两个单独的 .getjson 调用,其中第一个将执行然后乘以来自下一个数据调用的数据,但是,它只是将 NAN 作为值返回,我写错了什么?

$.getJSON( "https://api.coinmarketcap.com/v1/ticker/raiblocks/", function( data ) {
  $.getJSON("https://api.fixer.io/latest?base=USD", function (data2) {
    change['rai-usd-cmc'] = data[0]["price_usd"] * data2["GBP"];
    $(".change-rai-usd-cmc").text(change['rai-usd-cmc']);
    $(".change-rai-usd-cmc").text(parseFloat(change['rai-usd-cmc']).toFixed(2));
    loader(false)
    updateData()
  });
});

尝试将第一次执行的数据与第二次 getjson 调用相乘。

非常感谢。

【问题讨论】:

  • 尝试使用$.when
  • 我想避免使用 .when 因为它并行执行(我希望第一个先执行),但是,我只是尝试使用 .when 无论如何它根本不会加载数字。不知道我哪里出了问题......它要么返回 NAN 要么不会加载数字。
  • 只有 1 个 api 问题,data2["GBP"] 不存在于 data2 对象中。那就是你得到 NAN 的原因
  • 那我该怎么写呢?数据[2][“英镑”]?
  • 应该是data[2].rates["GBP"]。 @Chinmoy Samanta 告诉你答案

标签: javascript html getjson


【解决方案1】:

我调试了您的代码,发现“GBP”键存在于 data2.rates 对象中,而不存在于 data2 中。所以 data2["GBP"] 的值是未定义的。因此,它返回 NAN 作为值。所以你可以用 data2.rates["GBP"] 而不是 data2["GBP"] 重写你的代码。

这里附上代码。

   $.getJSON( "https://api.coinmarketcap.com/v1/ticker/raiblocks/", function( data ) {
  $.getJSON("https://api.fixer.io/latest?base=USD", function (data2) {
    change['rai-usd-cmc'] = data[0]["price_usd"] * data2.rates["GBP"];
    $(".change-rai-usd-cmc").text(change['rai-usd-cmc']);
    $(".change-rai-usd-cmc").text(parseFloat(change['rai-usd-cmc']).toFixed(2));
    loader(false)
    updateData()
  });
});

【讨论】:

  • 天哪,我的伙计,我已经盯着这个问题看了一个小时,而你刚刚解决了它!非常感谢。你是怎么发现问题的?所以下次我可以学会自己修复它:)
  • 你应该学习核心javascript以及如何调试javascript代码。
猜你喜欢
  • 2022-01-19
  • 2011-05-11
  • 1970-01-01
  • 1970-01-01
  • 2017-03-02
  • 2014-11-19
  • 1970-01-01
  • 2015-11-19
  • 2018-05-18
相关资源
最近更新 更多