在多个AJAX请求之后获得总和

时间:2014-05-17 15:44:14

标签: javascript jquery ajax

我已经创建了这个fiddle

我已经使用.when()。done()方法来获取Facebook赞和github粉丝的价值,但问题是当我总结这两个值时我会得到

[object Object],success,[object Object][object Object],success,[object Object]

Jquery的

    $(function () {
    $.when(
    $.ajax({
        type: "GET",
        dataType: "json",
        url: "https://api.github.com/users/bloggerever",
        success: function (data) {
            var githubfollowercount =data.followers;
          $(".githubfollowercount").html(githubfollowercount);
        }
    }),
    $.ajax({
        type: "GET",
        dataType: "json",
        url: "http://graph.facebook.com/bloggerever",
        success: function (data) {
            var facebookfollowcount = data.likes;
 $(".facebookfollowercount").html(facebookfollowcount);
        }

    })).done(function (githubfollowercount, facebookfollowcount) {
       var total=facebookfollowcount + githubfollowercount;

        $('.totalfollowercount').append(total);
    });
});

2 个答案:

答案 0 :(得分:4)

你得到的响应对象与ajax调用相同,但在then()中,它们被包装在数组中,所以你必须首先访问数组中的第一个成员,然后是包含like /的属性粉丝等

).done(function (git, fb) {
    var total = git[0].followers + fb[0].likes;
    $('.totalfollowercount').append(total);
});

FIDDLE

答案 1 :(得分:2)

首先,在ajax请求Array的情况下,当单个promises使用多个值解析时,$.when promise的回调参数是参数[data, status, jqXHR]

第二,它们包含原始data,而不是您在单个done回调中使用的变量中的那个。

这样做:

$(function () {
    $.when(
        $.getJSON("https://api.github.com/users/bloggerever").then(function(data) {
            return data.followers;
        }).done(function(githubfollowercount) {
            $(".githubfollowercount").html(githubfollowercount);
        }),
        $.getJSON("http://graph.facebook.com/bloggerever").then(function(data) {
            return data.likes;
        }).done(function(facebookfollowcount) {
            $(".facebookfollowercount").html(facebookfollowcount);
        })
    ).done(function (twitterfollowercount, instagramfollowercount) {
        var total=instagramfollowercount + twitterfollowercount;
        $('.totalfollowercount').append(total);
    });
});

updated fiddle