【问题标题】:How do I make an HTTP request to bitstamp?如何向 bitstamp 发出 HTTP 请求?
【发布时间】:2018-03-12 09:07:05
【问题描述】:

我正在尝试使用来自 bitstamp 的 API 在我的网页上获取货币交易价格。

我已经研究过这个问题,但我仍然无法让它工作,因为它总是返回ERROR

使用的链接是https://www.bitstamp.net/api/ticker/,响应应该是last

这是我的代码:

var xhr = new XMLHttpRequest();
xhr.open("GET", "https://www.bitstamp.net/api/ticker/", true);
xhr.send();
xhr.addEventListener("readystatechange", processRequest, false);
function processRequest(e) {
if (xhr.readyState == 4 && xhr.status == 200) {
     var response = JSON.parse(xhr.responseText);
     window.alert(response.last);
}
else {
    window.alert("ERROR");
} }

【问题讨论】:

  • 如果我没记错的话,您应该会在浏览器控制台中看到以下错误 - “请求的资源上不存在 'Access-Control-Allow-Origin' 标头”
  • 是的,这是真的。但是我该如何处理它
  • 请编辑您的问题以包含开发人员控制台中包含的所有错误详细信息,以及来自 bitstamp 的完整错误消息。这些是 HTTP 请求问题的重要部分。

标签: javascript json http


【解决方案1】:

试试这个:

function loadXMLDoc() {
  var xhttp = new XMLHttpRequest();
  xhttp.onreadystatechange = function() {
    if (this.readyState == 4 && this.status == 200) {
    var jsonRes= JSON.parse(this.responseText);
    		if (jsonRes.hasOwnProperty('last')) {
                 document.getElementById("demo").innerHTML =
  jsonRes.last;
                 alert(jsonRes.last);
}
    }
  };
  xhttp.open("GET", "https://www.bitstamp.net/api/ticker", true);
  xhttp.send();
}
<h2>Using the XMLHttpRequest object</h2>

<button type="button" onclick="loadXMLDoc()">Change Content</button>
<p>last attribute is: <span id="demo"></span></p>

【讨论】:

  • 你有错误吗?
  • 你做了什么改变,为什么?
  • 只是为了记录,如果你没有在任何地方使用它,你为什么打开

    标签?

  • 是的,你是对的,我本来打算使用一个,但你又想要一个警报而不是“p 标签”
  • 能否请您告诉我带有“p标签”的解决方案,谢谢先生。
【解决方案2】:

这是一种方法:

<script src="./jquery.min.js">
//none secure web page ?
    jQuery.get("https://www.bitstamp.net/api/ticker/", function (data, status)
    {
        // use response here; jQuery passes it as the first parameter
        var response = JSON.parse(data);
        window.alert(response.last);
            console.log("MyFunc: " + "response : " + response + "\nStatus: " + status);
    });

</script>

【讨论】:

  • 这似乎是正确的,但它不起作用......我做错了什么?
  • 这是正确的@Trrrrrrrrrrr ;O)。一定是你的网址,试试“bitstamp.net/api/ticker”(去掉https的s),嗯,它没有不安全的网页,我试过了,只有安全的https。
  • 您是否无法访问互联网或防火墙有问题?
【解决方案3】:
var xhr = new XMLHttpRequest();
xhr.open("GET", "https://www.bitstamp.net/api/ticker/", true);
xhr.send();
xhr.addEventListener("readystatechange", processRequest, false);

function processRequest(e) { 
  if (xhr.readyState == 4) {
    if (xhr.status == 200) {
      var response = JSON.parse(xhr.responseText);
      window.alert(response.last);
    } else {
      window.alert("ERROR");
    }
  }
}

【讨论】:

  • 你的问题在于你的逻辑。首先检查请求是否完成(readyState == 4),然后检查状态码并打印您想要的值或错误。
猜你喜欢
  • 1970-01-01
  • 2015-10-23
  • 2019-10-02
  • 1970-01-01
  • 1970-01-01
  • 2021-10-06
  • 1970-01-01
  • 1970-01-01
  • 2018-09-28
相关资源
最近更新 更多