由于多说评论插件的官方文档介绍得不明不白,所以技术渣在这里写一篇文章来介绍多说评论插件获取评论数和转发数的方法。
1. 首先看一下官方文档
官方文档给出的API:
http://api.duoshuo.com/threads/counts.json?short_name={注册的多说二级域名}&threads={文章的thread-key}
请求参数
short_name
string 必须 站点注册的多说二级域名。
threads
string 必须 你需要获取的文章的thread-key,可传递多个thread_key,即文章在原站点中的id,与评论框中data-thread-key一致。用逗号分割。
返回数据示例
返回格式支持:json
, jsonp
{
response: [{
thread_id: "3674083",
thread_key: "4ff28d95552860f21f000010",
comments: 20,
reposts: 0,
likes: 0,
dislikes: 0,
weibo_reposts: 1,
qqt_reposts: 1
}
],
options: {
comments_zero: "暂无评论",
comments_one: "1条评论",
comments_multiple: "{num}条评论",
reposts_zero: "暂无转发",
reposts_one: "1条转发",
reposts_multiple: "{num}条转发"
},
code: 0
}
官方给出的例子地址并没有很好地解决我们的问题,事实上我们只需要评论数或者转发数,并不需要多说的样式。所以下面介绍该怎么使用。
2. 使用jsonp的方式异步获取评论数、转发数
方式1. jQuery的调用方式:
//这里的参数见上面的说明
var countUrl = "http://api.duoshuo.com/threads/counts.json?short_name={你的域名}&threads={thread-key}";
$.getJSON(countUrl , function(data) {
//这里返回的json跟官方给出的可能不一致,debugger一下就行
});
方式2. 利用<script>标签
首先,在页面中定义一个回调函数:
<span id="article_11"></span> //回调函数 function duoshuoCountCallBack(data){ if(data.code == 0) { //这里的数据结构跟官方文档给出的不太一样,以实际的为准 var commentCount = data.response.art_detail_{thread-key}.comments; $("#article_11").text(commentCount); } } //请求文章评论数的多说URL var countUrl = 'http://api.duoshuo.com/threads/counts.jsonp?short_name={你的域名}&threads={thread-key}'; $("head").append("<script type='text\/javascript' src='"+countUrl+"&callback=duoshuoCountCallBack'><\/script>");
其实第二种方式(也就是利用<script>标签的方式和使用$.ajax()获取jsonp的原理都是一样的,$.ajax使用jsonp方式进行跨域的时候,底层使用的正是<script>标签进行跨域的)。