【问题标题】:My API Call Isn't Returning Anything?我的 API 调用没有返回任何内容?
【发布时间】:2016-04-26 10:07:42
【问题描述】:

我正在检查 Twitch.com 用户是否曾经存在过。当我检查 API 调用时,它在浏览器中返回一个值,但不在控制台中。

$.getJSON("https://api.twitch.tv/kraken/channels/comster404", function(data2){
  // console.log(data2.status);
  console.log(data2);
});

这是它应该得到的数据 { "error": "无法处理的实体", “状态”:422, "message": "频道 'comster404' 在 Twitch 上不可用" }

【问题讨论】:

  • 可能:Same-origin policy。它们似乎支持 JSONP,因为如果我添加 ?callback=foo,我会得到正确的 JSONP 响应。查看 $.getJSON 文档以获取 JSONP 信息。
  • Here's a JSONP demo 表明它工作正常。
  • 添加 ?callback=?到 URL 将使其成为 JSONP 对吗?
  • 是的。 jQuery 将分配一个要调用的函数名来代替?。如果您将该 URL 插入浏览器的地址栏中,但将您自己的函数名称替换为最后一个 ?,您会看到请求将作为调用该函数并将数据传递给它的脚本返回。

标签: javascript jquery api getjson


【解决方案1】:

您已通过 success 回调但没有 error 回调。由于在获取该 URL 时发生错误,因此不会调用 success 回调。

您可以分别使用done()fail()successerror 设置回调:

var log = document.getElementById("log");

$.getJSON("https://api.twitch.tv/kraken/channels/comster404")
  .done(function(data) {
    console.log(data);
    log.innertHTML += "success!";
  })
  .fail(function(error) {
    console.log(error);
    log.innerHTML += error.responseText;
  });
<script src="https://code.jquery.com/jquery-2.2.3.min.js" integrity="sha256-a23g1Nt4dtEYOj7bR+vTu7+T8VP13humZFBJNIYoEJo=" crossorigin="anonymous"></script>
<div id="log"></div>

【讨论】:

  • 很好,所以这将作为 JSON 而不是 JSONP 来执行?
  • 是的,它将被视为 JSON。
  • @user2872518:它将在browsers that support CORS 中工作。如果您需要支持旧版浏览器,则需要 JSONP。
猜你喜欢
  • 2020-01-27
  • 1970-01-01
  • 1970-01-01
  • 2012-10-25
  • 2021-07-31
  • 1970-01-01
  • 2018-07-30
  • 2016-06-23
相关资源
最近更新 更多