从多个Facebook API获取数据然后一起添加

时间:2015-06-22 22:52:46

标签: javascript jquery facebook

JQuery Snippet

// THE FOUR URL'S TO ADD THE TOTAL SHARES
var Gal_All = "Link One";
var Gal_S_1 = "Link Two";
var Gal_S_2 = "Link Three";
var Gal_S_3 = "Link Four";

$.ajax({
    type: 'GET',
    url: 'https://graph.facebook.com/' + Gal_All,
    success: function(data) {
        showCount(data);
    }
});

var fbshares;
var fbcomments;

function showCount(responseText) {

    var json = responseText;
    fbshares = json.shares;
    fbcomments = json.comments;

    $('#fb-share-count').html(fbshares);

    if (fbcomments) {
        $('#TotalComments').html(fbcomments + ' comments');
    }

    showTotal();
}

function showTotal() {
    if (!tweets) {
        tweets = 0
    }
    if (!fbshares) {
        fbshares = 0
    }
    if (tweets !== undefined && fbshares !== undefined)
        $('#total-share-count').html(tweets + fbshares);
}

从一个Facebook API获取数据我已经实现了,但我的画廊分为四页(Gal_All = all images and Gal_S_1, Gal_S_2, Gal_S_3 = categorized)

我已经通过我的Twitter计数器添加了所有四个页面,我想为Facebook做,所以它没有显示该页面的共享,但是所有四个页面。

请注意:评论提取只需来自Gal_All

2 个答案:

答案 0 :(得分:1)

首先,您可以使用

为多个对象请求API数据
/?ids=http://example.com/1,http://example.com/2,http://example.com/3

既然你想要第4个网址的评论,那还是需要一个额外的API请求(除非你想为其他三个提取评论,只是把它们扔掉,但这没有多大意义) - 但您可以使用batch request至少通过一个单个HTTP请求完成这两个不同的API调用。毕竟,HTTP请求是大部分时间向API发出请求的,所以如果速度是你最重视的因素(为什么不是你,用户不喜欢等待),我认为这是最好的方式。 (从纯粹的“美学”观点来看,使用承诺可能没问题,但它并没有改变多个HTTP请求非常慢的事实。)

答案 1 :(得分:0)

使用承诺:

var count = 0;

$.when(

   $.ajax({
       type: 'GET',
       url: 'https://graph.facebook.com/' + Gal_All,
       success: function(data) {
           count += data;
       }
   });
   $.ajax({
       type: 'GET',
       url: 'https://graph.facebook.com/' + Gal_S_1,
       success: function(data) {
           count += data;
       }
   });
   $.ajax({
       type: 'GET',
       url: 'https://graph.facebook.com/' + Gal_S_2,
       success: function(data) {
           count += data;
       }
   });
   $.ajax({
       type: 'GET',
       url: 'https://graph.facebook.com/' + Gal_S_3,
       success: function(data) {
           count += data;
       }
   });

).then(function() {

  showCount();

});