我正在使用AddThis JavaScript API。該方法,我用在這裏是掙扎:努力從JavaScript回調函數返回對象
http://support.addthis.com/customer/portal/articles/1137944-getting-counter-values-dynamically
我能得到我從「OBJ」對象所需要的數據 - 但僅限於該方法。我似乎無法將數據返回到我可以在我的jQuery循環中使用的全局變量。問題是我對Javascript對象的理解有限。這裏是我的代碼:
addthis.addEventListener('addthis.ready', addthisReady);
function addthisReady() {
var myobj = {};
addthis.sharecounters.getShareCounts({service: ['facebook', 'twitter', 'pinterest'], countUrl: 'http://www.addthis.com/'}, function(obj) {
console.log(obj); // OK
myobj = obj;
});
console.log(myobj); // Not OK
}
我的最終目標是擁有一個頁面上的多個文章鏈接,然後使用jQuery和這個API方法的總份額數追加到他們的鏈接標題。例如;
- 文章鏈接X(22股)
- 文章鏈接Y(13股)
- 文章鏈接Z(13股)
任何幫助將是盛大的。
CJ
的最新進展 - 幾乎沒有...
低於你的建議因素的代碼和一個示例由API供應商提供。它幾乎在那裏,但回調只是隨機更新Each循環中的一個元素。
示例代碼 - 註釋掉 - 表示應該可以多次調用該方法。
下面是代碼:
$(document).ready(function(){
addthis.addEventListener('addthis.ready', addthisReady);
function addthisReady() {
/*
addthis.sharecounters.getShareCounts('facebook', function(obj) {
document.getElementById('basic-example').innerHTML = '<code>'+JSON.stringify(obj, undefined, 4)+'</code>';
});
addthis.sharecounters.getShareCounts(['facebook', 'twitter', 'pinterest'], function(obj) {
document.getElementById('multiple-services').innerHTML = '<code>'+JSON.stringify(obj, undefined, 4)+'</code>';
});
addthis.sharecounters.getShareCounts({service: 'facebook', countUrl: 'http://www.addthis.com/'}, function(obj) {
document.getElementById('specific-url').innerHTML = '<code>'+JSON.stringify(obj, undefined, 4)+'</code>';
});
addthis.sharecounters.getShareCounts({service: ['facebook','twitter'], countUrl: 'http://www.addthis.com/'}, function(obj) {
document.getElementById('specific-url-multiple-services').innerHTML = '<code>'+JSON.stringify(obj, undefined, 4)+'</code>';
});
*/
$('.ico-shares').each(function(index) {
var elem = this;
var share_url = $(elem).attr('href').split('#')[0];
var shareLabel = $(elem).text();
var total_count = 0;
//Request Counts
addthis.sharecounters.getShareCounts({service: ['facebook', 'twitter'], countUrl: share_url}, function(obj) {
for (var key in obj)
{
total_count += obj[key].count;
}
if (total_count > 0)
{
shareLabel = total_count + ' Share';
}
if (total_count > 1)
{
shareLabel = total_count + ' Shares';
}
alert(shareLabel);
$(elem).text(shareLabel);
});
});
}
});
我的URL是在這裏:http://banarra.cjweb.com.au/html/news_article.php
注有3×「更多新聞」在底部的文章,但只有一個擁有它的共享鏈接更新。
非常感謝您的時間。
CJ
請看這裏http://stackoverflow.com/questions/14220321/how-to-return-the-response-from-an-ajax-call – elclanrs
你的jQuery循環在哪裏?您在getShareCounts中使用 –
,您是否異步調用回調?如果是,那麼該變量在getShareCounts調用後不會更新。 –