首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在javascript中显示api响应

在javascript中显示api响应
EN

Stack Overflow用户
提问于 2016-09-27 13:50:35
回答 3查看 1.2K关注 0票数 0

我正在制作一个包含一些硬币价值的仪表盘(在本例中,是比特币和NLG)。我正在从bitstamp获取BTC的当前值,我想从Bittrex获取NLG到BTC的值。我制作了以下页面:(你也可以在这里找到它:(我会在某个时候删除它) http://coin.hmrt.nl/)

代码语言:javascript
复制
<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <!-- The above 3 meta tags *must* come first in the head; any other head content must come *after* these tags -->
    <title>Coin.hmrt.nl</title>

    <!-- Bootstrap -->
    <link href="css/bootstrap.min.css" rel="stylesheet">

    <!-- HTML5 shim and Respond.js for IE8 support of HTML5 elements and media queries -->
    <!-- WARNING: Respond.js doesn't work if you view the page via file:// -->
    <!--[if lt IE 9]>
      <script src="https://oss.maxcdn.com/html5shiv/3.7.3/html5shiv.min.js"></script>
      <script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
    <![endif]-->
  </head>
  <body>
    <nav class="navbar navbar-inverse navbar-fixed-top">
      <div class="container">
        <div class="navbar-header">
          <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar" aria-expanded="false" aria-controls="navbar">
            <span class="sr-only">Toggle navigation</span>
            <span class="icon-bar"></span>
            <span class="icon-bar"></span>
            <span class="icon-bar"></span>
          </button>
          <a class="navbar-brand" href="#">Coin.hmrt.nl</a>
        </div>
        <div id="navbar" class="collapse navbar-collapse">
          <ul class="nav navbar-nav">
            <li><a href="#NLG-BTC">NLG-BTC</a></li>
            <li><a href="#NLG">NLG</a></li>
            <li><a href="#BTC">BTC</a></li>
          </ul>
        </div><!--/.nav-collapse -->
      </div>
    </nav>

    <div class="container" id="NLG-BTC">
      <section>
      <h2>NLG-BTC</h2>
        <div class="row row-eq-height">
          <div class = col-md-4>
            <h4>Huidige waarden</h4>
            <p class="BTC_EUR">BTC(&euro;): </p>
            <p class="greeting-content">NLG(&euro;): </p>
            <p class="NLG_BTC">NLG(BTC): </p>
          </div>

          <div class = col-md-4>
            <p class="last-bid">The API result is </p>
            <p>1</p>
          </div>

          <div class = col-md-4>
            <img src="grafiek.jpg">
          </div>
        </div>

    <!-- jQuery (necessary for Bootstrap's JavaScript plugins) -->
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
    <!-- Include all compiled plugins (below), or include individual files as needed -->
    <script src="js/bootstrap.min.js"></script>
    <script src="hello.js"></script>
    <script src="get_values.js"></script>
    <script src="get_values2.js"></script>
  </body>
</html>

现在,我将javascript一分为二,因为bittrex api调用不起作用,它阻止了bitstamp one加载它的值。这些是javascripts,第一个可以工作。

代码语言:javascript
复制
$(document).ready(function() {
  $.ajax({
    url: "https://www.bitstamp.net/api/v2/ticker/btceur"
  }).then(function(response_BTC_EUR) {
    var BTC_EUR = response_BTC_EUR.last;
    $('.BTC_EUR').append(BTC_EUR);

    url: "http://rest-service.guides.spring.io/greeting"
}).then(function(data) {
   $('.greeting-id').append(data.id);
   $('.greeting-content').append(data.content);
  });
});

下面的代码没有给出输出:

代码语言:javascript
复制
$(document).ready(function() {
  $.ajax({
    url: "https://bittrex.com/api/v1.1/public/getticker?market=BTC-NLG"
  }).then(function(response_NLG_BTC) {
    console.log(response_NLG_BTC)
    var NLG_BTC = response_NLG_BTC
    $('.NLG_BTC').append(NLG_BTC.result);
  });
});

在Python中,我可以使用所有的API,例如下面的代码:

代码语言:javascript
复制
requests.get('https://bittrex.com/api/v1.1/public/getticker?market=BTC-NLG').json()

它产生:

代码语言:javascript
复制
{'message': '',
 'result': {'Ask': 1.1e-05, 'Bid': 1.099e-05, 'Last': 1.099e-05},
 'success': True}

我遗漏了什么?我还发现调试非常困难,或者实际上不可能,因为我没有任何关于哪里出了问题的反馈。有什么想法吗?

EN

回答 3

Stack Overflow用户

发布于 2016-09-27 13:59:43

Javascript在这里可能不是最好的调试工具。在Firefox和Chrome中,您可以监控所有发送和接收的请求。这将让您看到所有的请求头,以及服务器到底发回了什么(如果有的话)。

在Firefox中,按Ctrl-Shft-K,然后单击Network选项卡,然后照常加载页面。注意您想要的请求。当它出现时,单击它,所有信息都将显示在右侧的较小窗口中。

我的猜测是,查询字符串出了问题(例如“?”自动转义)。这将显示在"Params“选项卡中。

票数 1
EN

Stack Overflow用户

发布于 2016-09-27 14:22:01

我认为您正在尝试将XMLHttpRequest添加到与您的页面所在的域不同的域。因此,浏览器会阻止它,因为出于安全原因,它通常会允许同一来源的请求。

这可能有助于解决https://www.codeschool.com/discuss/t/how-to-solve-no-access-control-allow-origin-header-is-present-on-the-requested-resource-origin-null-is-therefore-not-allowed-access-in-angular-js/28989问题

票数 1
EN

Stack Overflow用户

发布于 2016-09-27 13:56:32

尝试在请求中添加catch子句,查看是否出现错误:

代码语言:javascript
复制
 $(document).ready(function() {
      $.ajax({
        url: "https://bittrex.com/api/v1.1/public/getticker?market=BTC-NLG"
      }).then(function(response_NLG_BTC) {
        console.log(response_NLG_BTC)
        var NLG_BTC = response_NLG_BTC
        $('.NLG_BTC').append(NLG_BTC.result);
      })
      .catch(function(err) {
        console.error(err);
      })
    });
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39716898

复制
相关文章

相似问题

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