Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/88.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 为什么Twitchtv API流只显示每个通道的“脱机”?_Javascript_Html_Css_Twitch - Fatal编程技术网

Javascript 为什么Twitchtv API流只显示每个通道的“脱机”?

Javascript 为什么Twitchtv API流只显示每个通道的“脱机”?,javascript,html,css,twitch,Javascript,Html,Css,Twitch,这是一个FreeCodeCamp项目,我应该在其中显示频道是否处于活动状态。但是,在我创建的频道列表中,有些频道是直播的,有些频道不存在。尽管如此,不管怎样,当我在我的代码笔中测试它时,它仍然离线显示,即使有些人应该显示帐户不存在或在线。我还是想不出来。我确实测试了url,以确保它正常工作,并且正常工作。这里有一个例子: 以下是我的JS代码: $(document).ready(function() { getSteams(); }); var channels = ["Basical

这是一个FreeCodeCamp项目,我应该在其中显示频道是否处于活动状态。但是,在我创建的频道列表中,有些频道是直播的,有些频道不存在。尽管如此,不管怎样,当我在我的代码笔中测试它时,它仍然离线显示,即使有些人应该显示帐户不存在或在线。我还是想不出来。我确实测试了url,以确保它正常工作,并且正常工作。这里有一个例子:

以下是我的JS代码:

$(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...
});