2016-08-03 45 views
1

我想建立一個web應用程序,顯示哪些twitch用戶在線,並允許你點擊他們的名字,並會帶你到他們的抽搐頁面,我以前工作但嘗試後將url鏈接添加到他們的抽搐頁面不再有效,我看不到我改變了什麼。jquery twitch實時流api錯誤

$(function(){ 
     users = ["ESL_SC2","OgamingSC2", "cretetion","freecodecamp","storbeck","habathcx","RobotCaleb","noobs2ninja"]; 

     a = "https://api.twitch.tv/kraken/streams/" 
     b = "https://api.twitch.tv/kraken/channels/"; 
     for(i = 0; i<users.length; i++){ 
      $.getJSON(a + users[i], function(data) { 
       if(data.stream ==null){ 
        status = "offline"; 
        playing = ""; 
        } 
       else { 
        status = "online"; 
        playing = data.stream.game;  
       } 
      }); 

      x = b + users[i] 
      $.getJSON(x, function(result) { 
       displayName = result.display_name; 
       link= result.url; 
      }); 
      $("#list").append("<a href='" + link + "'><div class='block'> <h3 class='heading'>" + displayName + "</h3><p class='offline_status'>" + status + "</p><p>"+ playing + "</p></h3></div></a>"); 
     } 
    }) 

回答

0

您在Ajax調用之前沒有聲明變量,所以變量在ajax調用之外是未定義的。

試試這個:

$(function(){ 

    jQuery.ajaxSetup({async:false}); 

    var users = ["ESL_SC2","OgamingSC2", "cretetion","freecodecamp","storbeck","habathcx","RobotCaleb","noobs2ninja"]; 

    a = "https://api.twitch.tv/kraken/streams/" 
    b = "https://api.twitch.tv/kraken/channels/"; 

    for(i = 0; i<users.length; i++){ 
     var displayName, status, playing, link; 
     jQuery.get(a + users[i]).done(function(data) { 
      if(data.stream == null){ 
       status = "offline"; 
       playing = ""; 
      } 
      else { 
       status = "online"; 
       playing = data.stream.game;  
      } 

     }); 
     jQuery.get(b + users[i]).done(function(result) { 
      displayName = result.display_name; 
      link= result.url; 
      $("#list").append("<a href='" + link + "'><div class='block'> <h3 class='heading'>" + displayName + "</h3><p class='offline_status'>" + status + "</p><p>"+ playing + "</p></div></a>"); 
     }); 
    } 
}); 

編輯:你這樣做AJAX請求,但他們是異步的,所以代碼將繼續無需等待響應。爲了解決這個問題,我在這裏首先指定我想要同步請求。爲了確保請求得到良好執行並且數據可用,我使用了.done(),並將函數放在那裏。我希望你能理解你的一些錯誤:)(我已經瞭解了我的)。

的jsfiddle:https://jsfiddle.net/vp8s99L2/

+0

乾杯,現在來了一個列表,它以前是不可能的,但說不確定的,而不是顯示名稱,狀態等 – brad

+0

檢查我的編輯:),應能正常工作 – Treast