Javascript 为什么Twitchtv API流只显示每个通道的“脱机”?
这是一个FreeCodeCamp项目,我应该在其中显示频道是否处于活动状态。但是,在我创建的频道列表中,有些频道是直播的,有些频道不存在。尽管如此,不管怎样,当我在我的代码笔中测试它时,它仍然离线显示,即使有些人应该显示帐户不存在或在线。我还是想不出来。我确实测试了url,以确保它正常工作,并且正常工作。这里有一个例子: 以下是我的JS代码:Javascript 为什么Twitchtv API流只显示每个通道的“脱机”?,javascript,html,css,twitch,Javascript,Html,Css,Twitch,这是一个FreeCodeCamp项目,我应该在其中显示频道是否处于活动状态。但是,在我创建的频道列表中,有些频道是直播的,有些频道不存在。尽管如此,不管怎样,当我在我的代码笔中测试它时,它仍然离线显示,即使有些人应该显示帐户不存在或在线。我还是想不出来。我确实测试了url,以确保它正常工作,并且正常工作。这里有一个例子: 以下是我的JS代码: $(document).ready(function() { getSteams(); }); var channels = ["Basical
$(document).ready(function() {
getSteams();
});
var channels = ["BasicallyIDoWrk", "FreeCodeCamp", "Golgothus", "maatukka", "Vinesauce", "brunofin", "comster404", "OgamingSC2"];
var cb = "?client_id=egn4k1eja0yterrcuu411n5e329rd3";
function getSteams() {
for (var channel in channels) {
var indchannel = channel;
$.ajax({
url: "https://api.twitch.tv/kraken/streams/" + indchannel + cb,
type: 'GET',
dataType: "jsonp",
data: {
//action: 'query',
format: 'json',
},
success: function(data) {
var game;
var status;
if(data.stream === null) {
game = "Offline";
status = "offline";
} else if (data.stream === undefined) {
game = "The Account doesn't exist";
status = "Account is closed";
} else {
game = data.stream.game;
status = "online";
};
$("#channels").append('<div class="indbox"><a target="_blank" href="#">'+ game +'</a></div>');
}
});
}
}
全部的
在线 的
离线
部分问题在于for循环。用于in循环的Javascript用于迭代对象中的键。在数组的情况下,键是索引,这意味着
for (var channel in channels) {
将频道设置为:
这将导致您的URL看起来像:
https://api.twitch.tv/kraken/streams/0
我假设您需要的是通道数组中的通道名称,因此您的URL将如下所示:
https://api.twitch.tv/kraken/streams/SomeChannelName
您可以通过以下两种方式之一修复循环。第一个是更传统的for循环:
for (int i = 0; i > channels.length; i++) {
var indchannel = channels[i];
// perform your ajax calls here...
}
或者可以使用a方法,该方法为数组中的每个项调用一个函数
channels.forEach(function(indchannel, index, arr) {
// perform your ajax calls here...
});
谢谢它起作用了!但是,那些不存在的频道呢?它应该是显示帐户不存在..这是一个单独的问题,但简短的回答是,因为您对null和undefined的检查是可互换的;null和undefined基本上计算为相同的错误状态。尝试使用typeof data.stream=='null'。我想我已经找到了获取未定义状态的方法。如果我使用https://api.twitch.tv/kraken/channels/,我可以得到错误:找不到。示例:。另外,我注意到,如果我在url中使用流代替频道,我就能够获得到频道的链接。因此,我试图找出通过流url获取通道状态的方法……是的,从API检索正确的状态似乎是正确的方法。如果你在进步中有其他问题,请确保将它们作为单独的问题进行提问。还有,别忘了接受这个答案。
channels.forEach(function(indchannel, index, arr) {
// perform your ajax calls here...
});