首页 > 解决方案 > 获取 JSON 数据并在函数中显示为变量

问题描述

我试图通过 json url 通过 bitpay api 获取 btc_to_usd 值实际上是我想要实现的

这是需要手动输入 6277.51(btc 到 usd 值)和 2636554.2(btc 到 naira 值)的工作脚本

<script >

    //var btc_to_usd =;
    //var btc_to_ngn = ;
    //var usd_to_ngn = ;
    var btc = document.getElementById("btc");
    var usd = document.getElementById("usd");
    var ngn = document.getElementById("ngn");

    function changeBtc() {
        // usdValue = (btc.value * btc_to_usd);
        // ngnValue = (btc.value * btc_to_ngn);
        usd.value = correctionDecimalsbtc(btc.value * 6277.51);
        ngn.value = correctionDecimalsbtc(btc.value * 2636554.2);
    }

    function changeUsd() {
        btc.value = correctionDecimalsbtc(usd.value / 6277.51);
        ngn.value = correctionDecimalsbtc(usd.value * 420);
    }

    function changeNgn() {
        btc.value = correctionDecimalsbtc(ngn.value / 2636554.2);
        usd.value = correctionDecimalsbtc(ngn.value / 420);
    }

    function correctionDecimalsbtc(value) {
        if(countDecimals(value) > 8) return value.toFixed(8);
        return value;
    }

    function countDecimals(value) {
        if(Math.floor(value) === value) {
            return 0;
        } else {
            if (undefined !== value.toString().split(".")[1]) {
                return value.toString().split(".")[1].length;
            } else {
                return 10;
            }
        }
    }

</script>

这是我试图通过 json url 获取 btc_usd 值的非工作脚本

<script >

    //var btc_to_usd = $url='https://bitpay.com/api/rates';
$json=json_decode( file_get_contents( $url ) );
$naira=$btc=0;
    //var btc_to_ngn = (btc_to_usd * 420);
    //var usd_to_ngn = ;
    var btc = document.getElementById("btc");
    var usd = document.getElementById("usd");
    var ngn = document.getElementById("ngn");

    function changeBtc() {
        // usdValue = (btc.value * btc_to_usd);
        // ngnValue = (btc.value * btc_to_ngn);
        usd.value = correctionDecimalsbtc(btc.value * 6277.51);
        ngn.value = correctionDecimalsbtc(btc.value * 2636554.2);
    }

    function changeUsd() {
        btc.value = correctionDecimalsbtc(usd.value / 6277.51);
        ngn.value = correctionDecimalsbtc(usd.value * 420);
    }

    function changeNgn() {
        btc.value = correctionDecimalsbtc(ngn.value / 2636554.2);
        usd.value = correctionDecimalsbtc(ngn.value / 420);
    }

    function correctionDecimalsbtc(value) {
        if(countDecimals(value) > 8) return value.toFixed(8);
        return value;
    }

    function countDecimals(value) {
        if(Math.floor(value) === value) {
            return 0;
        } else {
            if (undefined !== value.toString().split(".")[1]) {
                return value.toString().split(".")[1].length;
            } else {
                return 10;
            }
        }
    }

</script>

请帮忙,我已经搜索并经历了很多解决方案和教程,但没有运气。

标签: javascriptjson

解决方案


您可以简单地使用Fetch API,如下所示:

var btc = document.getElementById("btc");
var usd = document.getElementById("usd");
var ngn = document.getElementById("ngn");

(async () => {
  let data = await (await fetch("https://bitpay.com/api/rates")).json();
  usd.textContent = data[2].rate
})();

function changeBtc() {
  // usdValue = (btc.value * btc_to_usd);
  // ngnValue = (btc.value * btc_to_ngn);
  usd.value = correctionDecimalsbtc(btc.value * 6277.51);
  ngn.value = correctionDecimalsbtc(btc.value * 2636554.2);
}

// [...]

检查此代码andbox.io/s/runtime-morning-ysxlx


推荐阅读