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

JavaScript中的比特币API货币转换器,javascript,xmlhttprequest,Javascript,Xmlhttprequest,我正在尝试做我自己的比特币货币转换器。检查汇率的链接是: 所以我做了一个HTML表单,有一个输入,用户会给我以美元为单位的值,他想检查目前有多少BTC <form class="searchform" name="BTCValueForm" action="" method="POST"> U$<input type="text" name="usd" id="usd" maxlength="5"> - BTC = <p id="btcvalue"> &l

我正在尝试做我自己的比特币货币转换器。检查汇率的链接是:

所以我做了一个HTML表单,有一个输入,用户会给我以美元为单位的值,他想检查目前有多少BTC

<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>
功能负载为:

 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请求在启动之前就被取消了。这里发生了什么事?有什么线索吗?

可能是区块链不允许他们的COR(跨来源资源共享)。 我会推荐你使用,而且是免费的。我下面的答案可能会帮助你找到你想要的

<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>
使用带有keypress()的JQuery,它比XML请求(dry)更干净

我建议您使用兼容各种编程语言(如Shell、Node.js、Java、Python、PHP、Ruby、js、C#、C、Go、Swift)的全球179种货币进行比特币货币转换

在这里,我使用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响应如下所示:

{
    "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转换器最简单的解决方案。

对不起。。。你的意思是什么?blockchain.info是否发送相应的信息,以便您可以使用页面中的内容?嗯。。。我不知道这件事。我需要为这个或什么放一些相应的标题?你不需要,但是服务器(blockchain.info)需要添加一些标题,如果他们希望你能够在你的页面上使用他们的东西。在这种情况下我应该怎么做?
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)
    });
})
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();
{
    "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"
    }
}