0

我的javascript解決方案用於在特定頁面上拉取一組鏈接的喜歡不再有效。我找不到任何錯誤,我嘗試使用.api()方法(下面)和Data.query()方法,但都沒有工作。這是我目前擁有的代碼,它與我在工作時使用的代碼類似。FQL查詢沒有得到迴應

var inlist = [url1, url2, url3..... urln]; 

FB.api(
    { 
    method: 'fql.query', 
    query: 'SELECT url, total_count FROM link_stat WHERE url IN('+inlist.substr(0, inlist.length-2)+')' 
    }, 
    function(response) { 
    console.log(response); 
    for(var i = 0 ; i < response.length ; i++) { 
     if (response[i]['total_count'] > 0){ 
     $(vids[response[i]['url']]).append("<div class='likes'>"+response[i]['total_count']+"</div>"); 
     } 
    } 
    } 
); 

控制檯報告什麼都沒有,我的FB對象正確初始化(示例中的查詢,沒有問題跑)和URL的基於鏈接列表的動態生成。另外,值得一提的是,我在這裏測試了FQL:http://developers.facebook.com/docs/reference/rest/fql.query/,它工作的很好...

回答

0

看起來問題是我包括太多的IN(...)項目。奇怪的是,雖然沒有錯誤,但沒有迴應。我把項目限制在10個,一切又開始了。

for(var i=0 ; i < Math.ceil(inlist.length/10); i++) { 
    FB.api(
    { 
     method: 'fql.query', 
     query: 'SELECT url, total_count FROM link_stat WHERE url IN('+inlist.slice((10*i), ((i+1)*10)).join(', ')+')' 
    }, 
    function(response){ 
     for(var i = 0 ; i < response.length ; i++) { 
     ... 
     } 
    } 
); 
0

我不確定你爲什麼在陣列上使用substr但是這是我會怎麼做:

var inlist = ['www.facebook.com','www.masteringapi.com']; 
FB.api(
{ 
    method: 'fql.query', 
    query: 'SELECT url, total_count FROM link_stat WHERE url IN("'+inlist.join('","')+'")' 
}, 
function(response) { 
    for(var i = 0 ; i < response.length ; i++) { 
     if (response[i]['total_count'] > 0){ 
     console.log(response[i]['url'] + ': ' + response[i]['total_count'] + ' likes'); 
     } 
    } 
} 
); 

這將返回類似:

www.facebook.com:36643537個喜歡
www.masteringapi.com: 26人喜歡