2016-04-26 66 views
0

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

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

这是它应该得到 { “错误” 的数据: “无法处理的实体”, “状态”:422, “消息”: “通道 'comster404' 不适用于肌” }

+1

大概:相同的起源(https://developer.mozilla.org/ EN-US /文档/网络/安全性/同-origin_policy)。他们似乎支持JSONP,因为如果我添加'?callback = foo',我会得到正确的JSONP响应。查看JSONP信息的['$ .getJSON'](http://api.jquery.com/jquery.getJSON/)文档。 – 2016-04-26 01:49:27

+0

[这是一个JSONP演示](https://jsfiddle.net/rkyza45u/),它显示它正在工作。 – 2016-04-26 01:53:56

+0

添加?callback =?到URL会使它成为JSONP是否正确? – user2872518

回答

1

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

可以分别设置回调successerrordone()fail()

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>

+0

很好,所以这会做成JSON而不是JSONP呢? – user2872518

+0

是的,它将被视为JSON。 – 2016-04-26 02:09:55

+0

@ user2872518:它可以在[支持CORS的浏览器](http://caniuse.com/#search=cors)中使用。如果您需要支持旧浏览器,则需要使用JSONP。 – 2016-04-26 02:13:08

相关问题