FQL Query не получает ответ - PullRequest
       2

FQL Query не получает ответ

0 голосов
/ 24 сентября 2011

Мое решение javascript для добавления лайков для набора ссылок на определенной странице больше не работает.Я не могу найти ничего плохого, и я пытался использовать метод .api () (ниже) и метод Data.query (), но ни один из них не работает.Это код, который у меня сейчас есть, и он похож на тот, который я использовал, когда работал.

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/, и он работал нормально ...

Ответы [ 2 ]

0 голосов
/ 25 сентября 2011

Похоже, проблема была в том, что я включил слишком много 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 голосов
/ 24 сентября 2011

Я не уверен, почему вы используете 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 лайков

...