如何获取Twitter的URL计数?

6
我有以下代码,但我不明白为什么它没有返回并在HTML body中打印出来..
var pageURL = document.URL;
var tweet  = "https://cdn.api.twitter.com/1/urls/count.json?url='"+ pageURL + "'";

$.getJSON(tweet,function(json){
    $('#twitterfeed').html(json.count); 
});

<div id="twitterfeed"></div>

https://cdn.api.twitter.com/1/urls/count.json?url=http://www.google.com

返回 {"count":23844636,"url":"http://www.google.com/"}

以下内容似乎无法正常工作,是否有人知道原因?


JavaScript在同一文件中是在HTML之前吗? - user2182349
是的,它在最上面。 - iBrazilian2
将代码包裹在 $(function(){ // your code here }); 中,这样可以延迟执行直到 DOM 被加载和解析。 - user2182349
3个回答

10

根据博客文章的结尾,也许在不久的将来会有一个替代品?无论如何,我认为删除它是一个非常糟糕的决定。即使Facebook API已经在其API中改进了这些点赞计数。希望Twitter能以更好的方式再次实现它。"我们感谢您在过去60天中对您如何使用这些计数的反馈,并期待在创建和改进将Twitter内容集成到您的应用程序和网站中的工具时加以利用。" - Anselme

3

默认情况下,jQuery会发起AJAX请求。如果跨域且响应中没有CORS HTTP头,则请求将失败。在请求URL中添加&callback=?可使其成为JSONP请求。

  var pageURL = "http://www.google.com";
  var urlParams = $.param({ "url": pageURL });
  var tweet  = "https://cdn.api.twitter.com/1/urls/count.json?"+urlParams;


  $.ajax(tweet, { "dataType" :"jsonp" }).done(function(json){
    $('#twitterfeed').text(json.count); 
  });

Demo

http://jsbin.com/tasaloraje/edit?html,output


然而它似乎不起作用,看看这个.. http://jsbin.com/yebotuwaya/edit?html,output 但是如果你删除'" + pageURL + "'并包含URL,它就可以工作了.. 你有任何想法为什么会这样吗? - iBrazilian2
通过为页面URL添加适当的URL编码,使用$.ajax调用和延迟(由jQuery开发人员推荐)来更改脚本。检查jsFiddle。 - Maksym Kozlenko
3
这现在已经被弃用了(https://blog.twitter.com/2015/hard-decisions-for-a-sustainable-platform)。 - redox

2

谢谢,这是一个不错的替代方案,但速度要慢得多... :/ - Anselme
我更喜欢慢但是能工作,而不是不工作;-) 只有计数会变慢,因为我们使用CDN,所以显示应该很快。 - user3512969
谢谢,这是一个不错的选择,但在某种程度上有一定限制:如果链接属于youtube.com或外部域名,获取Youtube视频的推文数量怎么办?我真的希望Twitter能提供一种替代方法,即使我们不得不付费。 - Anselme

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接