2015-12-20 45 views
0

我有一點問題。我是JS的新手,我無法弄清楚。Javascript pass var

我試圖從Facebook上得到一個朋友列表。要做到這一點,我使用的用戶職位,我想只顯示重複。我的第一個答案是如何從一個循環中顯示所有的朋友,並只獲取重複項(我只想要一個或兩個對象),其次是如何將var從一個函數傳遞到另一個函數,因爲我想將所有的信息發佈到一個PHP文件。

這是我做過什麼:

function getInfo() { 
    FB.api(
     '/me', 
     'GET', 
     {fields: 'first_name'}, 
     function(response) { 
      friends(); 
      var myname = response.first_name; 
      $.post(
       "file.php", 
       { myname:myname,friendsname:friendsname }, 
       function(data) { $("body").append(data); } 
      ); 
     } 

有了這個功能,我得到我的第一個名字。

function friends() { 
    FB.api(
     '/me/posts?fields=likes{id,name}', 
     {limit:50}, 
     function(response) { 
      if (response.data) { 
       $.each(response.data,function(index, posts) { 
        var posturi = posts.likes; 
         $.each(posturi.data, function(useri, lista) { 
          var friendsname = lista.name; 
         }); 
       }); 
      } 
     } 
    ); 
} 

這是和我的朋友的名單。如果我檢查console.log(friendsname)它給了我所有重複的朋友。但是,如果我在$.each中寫入innerHTML,它只返回1個對象。我怎麼能通過friendsnamefriends()getInfo(),所以我可以發佈到該.php文件?

回答

0

這是因爲您在每個循環$.each中覆蓋了innerHTML的值。

試試這個:

var posturi = posts.likes; 
var names = posturi.data.map(function(item) { return item.name; }).join(', '); 

names將包含一個逗號分隔的名稱列表。

+0

謝謝!它工作正常!只有這個請,我如何使var名稱是全球性的,因爲我想在函數getInfo()中使用它,所以我可以將它發佈到file.php。我如何選擇,如果我只想要一個用戶,或三個或多少我想要的,如果我有更多的用戶。像名字[1];謝謝! –

+0

爲什麼要存儲全局變量?只需將它們作爲[參數](http://www.w3schools.com/js/js_function_parameters.asp)傳遞給'getInfo()'函數即可。 爲了過濾掉東西,你可以使用['Array#filter'](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/filter)。我建議你閱讀關於JavaScript的更多信息,並打開新的問題,以防你在其他地方丟失。 – Louy