Hi, I’ve been having an issue with my project: https://codepen.io/Wheresmylawyer/pen/oGBKjw?editors=0010. I can see in the console that the $.getJSON request goes through, and is giving me the data as expected. I can switch between active,online,offline streams with the buttons and it will show the offline streams. However, it doesn’t show the online streams. I think it has something to do with the way the if/else statement is setup in the JS file? Any help would be greatly appreciated.
Thanks
Afternoon,
Have you gone through the errors in the dev console for this codePen? Looks like you’ve got a few in there
You’re not accessing the logo property of the data object coming back for each online user. I can see where you’re off. Check the console’s errors specific to the line where your code fails, and I’m sure you’ll see what needs to be changed
Thanks. I didn’t know you could use your browser to check for errors in Codepen. I think I relying on old documents for the API, I thought there was a logo component to the data for active streams, but now that I look again it’s not coming up in the console. Changing the src attribute for the image fixed it completely: https://codepen.io/Wheresmylawyer/pen/oGBKjw
Yup, I totally just stumbled onto it once.
Just so you know, you could have used data.stream.logo
to get the source too. I think you were just missing the .stream.
portion
If you’re interested I took a different approach. I check the users object, and then run a separate ajax
call to see if they’re online. I just started working on this yesterday so I’m far from done
const $main = $('#main'),
$title = $('#title'),
$fcStatus = $('#FC-status'),
$status = $('#status'),
$streamers = $('#streamers');
const streamersArr = ["ESL_SC2", "OgamingSC2", "cretetion", "freecodecamp", "storbeck", "habathcx", "RobotCaleb", "noobs2ninjas"];
$(function(){
isCodeCampOnline();
streamersArr.forEach(function(e,i){
getTwitchUserInfo(e);
});
//Make call to api
function isCodeCampOnline() {
$.ajax({
url: 'https://wind-bow.gomix.me/twitch-api/streams/freecodecamp',
type: 'GET',
dataType: 'jsonp',
success: function(data){
console.log(data.stream);
if(data.stream == null) {
$fcStatus.append('<h3>FC is OFFLINE<h3>');
} else {
$fcStatus.append('<h3>FC is ONLINE! <a href="https://api.twitch.tv/kraken/channels/freecodecamp">View Channel</a></h3>')
}
}
});
}//End isCodeCampOnline()
function getTwitchUserInfo(user) {
$.ajax({
url: 'https://wind-bow.gomix.me/twitch-api/users/' +user,
type: 'GET',
dataType: 'jsonp',
async: false,
success: function(data){
let logo = data.logo,
name = data.display_name,
bio = data.bio;
isUserOnline(user, data.logo, data.display_name, data.bio);
}
})
}//End getTwichUserInfo()
function isUserOnline(user, logo, name, bio) {
$.ajax({
url: 'https://wind-bow.gomix.me/twitch-api/streams/' +user,
type: 'GET',
dataType: 'jsonp',
success: function(statusData){
//In case no BIO info given
if(bio == null) {
bio = '<p>No BIO given, this guy must be a ninja</p>';
}
let status;
if(statusData.stream == null) {
status = '<p> is OFFLINE<p>';
} else {
status = '<p> is ONLINE! <a target="_blank" href="https://www.twitch.tv/'+user+'">View Channel</a><p>';
}
var html = '<div class="user-div">'+
'<div class="logo"><img src="' +logo+ '"</div>'+
'<div class="name">' +name+ '</div>'+
'<div class="user-status">' +status+ '</div>'+
'<div class="info"><h3 class="user-bio">' +bio+ '</h3></div>'+
'</div>';
console.log(status);
$status.append(html);
}
})
}//End isUserOnline()
})//End jQuery