Извлечение количества лайков в facebook и установка переменной javascript для этого числа - PullRequest
0 голосов
/ 18 февраля 2012

Мне нужно количество лайков на Facebook, которое я получаю через

https://graph.facebook.com/?ids=http://www.stackoverflow.com

это вывод в формате json:

{
   "http://www.stackoverflow.com": {
      "id": "http://www.stackoverflow.com",
      "shares": 4984,
      "comments": 2
   }
}

Но как извлечь этономер 4984 и установить переменную javascript для этого числа?

Пожалуйста, покажите небольшой рабочий пример.

спасибо

Ответы [ 2 ]

1 голос
/ 18 февраля 2012

Graph API поддерживает JSONP, поэтому вы можете использовать callback аргумент для вызова вашей функции, которая установит желаемую переменную:

var likes;
function setLikes(data){
  likes = data.shares;
  console.log('Got results', data.id, likes);
}

var s = document.createElement('script');
s.src = 'https://graph.facebook.com/?id=http://www.stackoverflow.com&callback=setLikes';
document.getElementsByTagName('head')[0].appendChild(s);

Примечание: Я изменилids до id, что упрощает вывод, если вам нужны детали только для одного объекта OpenGraph.Если вам нужно получить информацию для многих объектов, вам нужно изменить битовый метод setLikes для циклического переключения ключей или получить информацию по нужному ключу data['http://www.stackoverflow.com'].shares

Обновление:
Из-за асинхронного характера предыдущего вызова вам придется ждать с кодом, который зависит от likes, до тех пор, пока не будет вызван getLikes.Это может быть сделано разными способами, обратитесь к следующему коду, чтобы получить некоторую подсказку ...

var likes; // This is a variable scoped outside of setLikes!
function setLikes(data){
  // Once this is set likes will be available everywhere in the scope it defined!
  likes = data.shares;
  // You may run code that depends on likes variable here
  call_function_that_depends_on_likes();

  // You can also fire an event that your code subscribed to
  // and pass likes as an argument...
  // If you using Facebook JS-SDK
  FB.Event.fire('my-custom-event', likes);

  // If you using jQuery
  $(document).trigger('my-custom-event', likes)
}

// If you using Facebook JS-SDK
FB.Event.subscribe('my-custom-event', function(likes){
  // Run your code from here
});

// If you using jQuery
$(document).on('my-custom-event', function(evt, likes){
  // Run your code from here
});

Возможно, вы уже сделали нечто подобное, если использовали domready или document.load.

0 голосов
/ 18 февраля 2012

Если у вас есть этот объект в переменной output, вы бы прочитали его так:

var likes = output["http://www.stackoverflow.com"].shares;

Но я понимаю, что вам также интересно, как получить это значение из Facebook?Вот использование популярной библиотеки javascript jQuery:

$.getJSON("https://graph.facebook.com/?ids=http://www.stackoverflow.com&callback=?", function(response) {
    var likes = response["http://www.stackoverflow.com"].shares;
    // Go do something with likes here
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...