首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >JavaScript中的比特币API货币转换器

JavaScript中的比特币API货币转换器
EN

Stack Overflow用户
提问于 2014-06-01 20:11:59
回答 2查看 4.7K关注 0票数 0

我想做我自己的比特币兑换。检查货币汇率的链接是:

https://blockchain.info/tobtc?currency=USD&value=1000

因此,我做了一个HTML表单,只有一个输入,用户将给我一个美元的价值,他想要检查多少个BTC的时间。

代码语言:javascript
复制
<form class="searchform" name="BTCValueForm" action="" method="POST">
U$<input type="text" name="usd" id="usd" maxlength="5">
 - BTC = <p id="btcvalue"> </p>
 <p> <input name="Exchange" type="submit" class="button" onclick="return BitcoinRate(BTCValueForm)" value="Check"> </p>

</form>

好的,该按钮调用javascript函数BitcoinRate,即:

代码语言:javascript
复制
function BitcoinRate(BTCValueForm)
{
    load('https://blockchain.info/tobtc?currency=USD&value='+BTCValueForm.usd.value,'BitcoinRate'); 
}

功能负载是:

代码语言:javascript
复制
 function load(url,reason) {
    var xmlhttp;

    if (window.XMLHttpRequest) {
        // code for IE7+, Firefox, Chrome, Opera, Safari
        xmlhttp = new XMLHttpRequest();
    } else {
        // code for IE6, IE5
        xmlhttp = new ActiveXObject('Microsoft.XMLHTTP');
    }

    xmlhttp.onreadystatechange = function() {
        if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
            var Answer = xmlhttp.responseText;
if (reason == 'BitcoinRate') {
                document.getElementById('btcvalue').innerHTML = Answer; 
            }
    xmlhttp.open('GET', url, true);
    xmlhttp.send();
    }

它应该从API中得到答案,并在表单中插入"btcvalue“一段。但是查看Chrome的调试器,我发现GET请求在启动之前就被取消了。这里发生了什么事?有什么线索吗?

EN

回答 2

Stack Overflow用户

发布于 2020-10-06 05:47:56

我将推荐CurrencyFreaks API,因为您可以使用与各种编程语言兼容的世界179种货币进行比特币转换,例如Shell、Node.js、Java、Python、PHP、Ruby、C#、C、Go、Swift。

在这里我使用JavaScript:给出了比特币转换器端点

代码语言:javascript
复制
var xhr = new XMLHttpRequest();
xhr.withCredentials = true;

xhr.addEventListener("readystatechange", function() {
  if(this.readyState === 4) {
    console.log(this.responseText);
  }
});

xhr.open("GET", "https://api.currencyfreaks.com/latest/convert
    ?apikey=YOUR_APIKEY
    &from=USD&to=BTC
    &amount=10000");

xhr.send();

JSON响应如下:

代码语言:javascript
复制
{
    "date": "2020-10-06 05:44:00+00",
    "current_rates": {
        "USD": "1.0",
        "BTC": "0.00009296030223253462"
    },
    "converted_amount": "0.9296030223253462",
    "query": {
        "given_amount": "10000.0",
        "from": "USD",
        "to": "BTC"
    }
}

我希望这将是BTC转换器最简单的解决方案。

票数 2
EN

Stack Overflow用户

发布于 2018-08-23 11:06:31

可能是BlockChain不允许他们的CORS(跨源资源共享)。我建议你使用CryptoCompare API,它是免费的。我下面的回答可能会帮助你找到你想要的东西。

代码语言:javascript
复制
<form class="searchform" name="BTCValueForm" action="" method="POST">
  - U$<input type="text" name="usd" id="usd" maxlength="5">
  - BTC = <p id="btcvalue"> </p>
 <p> <input name="Exchange" type="submit" class="button" onclick="return 
  BitcoinRate()" value="Check"> </p>

</form>

我将为Xml使用加密比较API,以获得btc的价格。

代码语言:javascript
复制
function BitcoinRate(){
    var btc = document.querySelector('#btcvalue'),
    amount = document.querySelector('#usd').value

    var XHR = new XMLHttpRequest();
    XHR.onreadystatechange = function(){
        if(XHR.readyState == 4 && XHR.status == 200){
            console.log(data)
            var data = JSON.parse(XHR.responseText)
            // Divide the given amount with the current price of one BTC to USD = BTC amount
            let BTC_amount = amount / data.USD
            // You can round up the BTC_amount to your desired value
            let final_value = BTC_amount.toFixed(3);
            // Equate the final_value to the btc var, to display it
            btc.innerText = final_value;
        } else {
            alert('something went wrong')
        }
    }
    // Note: here I used BTC to USD, but you can use a different coin or fiat currency supported by CC API
    var url = 'https://min-api.cryptocompare.com/data/price?fsym=BTC&tsyms=USD';

    XHR.open('GET', url);
    XHR.send();

}

使用JQuery和keypress(),它比XML请求(Dry)更干净

代码语言:javascript
复制
var amount = jQuery('#usd').val(),
    btc    = jQuery('#btcvalue')
jQuery('#usd').keypress(function(event){
    if ( event.which == 13 ) {
       event.preventDefault();
    }
    $.get("https://min-api.cryptocompare.com/data/price?fsym=BTC&tsyms=USD",function(data){
     let BTC_amount = amount / data["USD"],
         final_value = BTC_amount.toFixed(3)
     btc.text(final_value)
    });
})
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23984019

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档