使用jQuery从URL获取JSON

时间:2018-02-04 20:37:46

标签: javascript jquery

我想从URL获取JSON,但jQuery的函数getJSON不起作用。我收到此错误:"无法加载https://bittrex.com/api/v1.1/public/getticker?market=usdt-btc:否“访问控制 - 允许 - 来源'标头出现在请求的资源上。起源' null'因此不允许访问。" 我做错了什么?或者我应该使用其他一些功能? 请帮忙!

function ticker(url)
{
    this.Last = 0;

    $.getJSON(url, function(data)
    {
        this.Last = data.result.Last;
    });

    this.getFullInfo = function()
    {
        console.log("Last: " + this.Last);
    }
}

var usdtBTC = new ticker("https://bittrex.com/api/v1.1/public/getticker?market=usdt-btc");
usdtBTC.getFullInfo();

1 个答案:

答案 0 :(得分:2)

有些事情是错的:

  1. 该网址无法通过AJAX访问,供全世界查看。 Read up on CORS。该错误实际上来自HEAD请求,浏览器会自动查看哪些主机&方法可以访问链接。

  2. 您需要将this参数绑定到函数,或者this将引用全局范围(函数函数):

  3. $.getJSON(url, function(data) {
        this.Last = data.result.Last;
    }.bind(this));
    
    1. 如果请求有效,您需要等到请求完成后再调用getFullInfo()(就像超时一样),或者this.Last仍然是0。 / p>

    2. 您几乎总是希望添加失败功能,尤其是在测试时:

    3. 
      
      var url = "https://bittrex.com/api/v1.1/public/getticker?market=usdt-btc";
      $.getJSON(url, function(data) {
          console.log(data.result);
      }.bind(this))
      .fail(function(jqxhr, textStatus, error) {
          var err = textStatus + ", " + error;
          console.log("Request Failed: " + err);
      });
      
      <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
      &#13;
      &#13;
      &#13;