2015-10-15 54 views
0

我推數據數組我可以看到它在數組中,但功能不存在數組中的數據爲什麼?沒有結果我的javascript數組爲什麼?

功能keyWordsearch(){

 var musicIDs = []; 
     gapi.client.setApiKey('AIzaSyB2O-w22OSJVSKPhAYsK_zxX7FsThM0mhE'); 
     gapi.client.load('youtube', 'v3', function() { 
      idlist = ''; 


      var q = $('#querySerach').val(); 
      $("#result").empty(); 
      var request = gapi.client.youtube.search.list({ 
       q: q, 
       part: 'snippet', 
       maxResults: 3, 

      }); 

      request.execute(function (response) { 

       for (var i = 0; i < response.items.length; i++) { 

        var musicid2 = response.items[i].id.videoId; 

        musicIDs.push(musicid2); 

        // i push data array i can see it in array but out of function there is no data in array why ?? ------ 

        var pID = '#myPlayerID'; 
        var ratio = '4/3'; 

       } 

      }); 

     }); 
     alert(musicIDs[1]); // here is musicID[1] return undefined 

}

回答

1

Ajax調用異步,所以你必須做alert其中API調用的響應函數內。在這種情況下,裏面的request.execute(function (response) {

request.execute(function (response) { 

      for (var i = 0; i < response.items.length; i++) { 

       var musicid2 = response.items[i].id.videoId; 

       musicIDs.push(musicid2); 

       var pID = '#myPlayerID'; 
       var ratio = '4/3'; 

      } 

      alert(musicIDs[1]); 
} 

更多信息here

+0

答案編輯,感謝 –

+0

感謝你的幫助。是的,我可以得到這種情況下的數據,但我需要另一個函數中的數組。但是當我在另一個函數中使用此數組時,沒有數據返回 –

+1

您需要調用響應函數內的另一個函數以確保此數組具有正確的數據或者在第一個函數完成他的ajax請求時使用promise來執行其他函數。查看更多信息鏈接。 –

相關問題