我已经创建了这个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);
});
});
答案 0 :(得分:4)
你得到的响应对象与ajax调用相同,但在then()
中,它们被包装在数组中,所以你必须首先访问数组中的第一个成员,然后是包含like /的属性粉丝等
).done(function (git, fb) {
var total = git[0].followers + fb[0].likes;
$('.totalfollowercount').append(total);
});
答案 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);
});
});