因为腾讯给的接口有刷新限制,新手每小时1000次,平均算下来4.几秒一次,很明显并不是每次都能成功获取的,所以我重写了加载函数,0.5秒加载一次,直到成功为止.另外,我还重写了显示函数,鼠标移过的时候会自动伸展显示下面的内容,左击右击切换的功能依然还在,但自动翻页被我去掉了,已经用处不大了....
下面是代码...
主页 → 微博
腾讯官方 JSONP 接口调用微博 [II]
腾讯官方 JSONP 接口调用微博
先简单写一下,后面告诉大家这玩意儿是如何工作的.
<script type="text/javascript">
function weiboData(d){
for(i in d.data){
if(d.data[i].nick.length > 45) d.data[i].nick.substr = d.data[i].nick.substring(0, 45) + '...';
switch(d.data[i].type){
case 1:
var type = '广播';
break;
case 2:
var type = '转播';
break;
case 3:
continue;
break;
case 4:
var type = '对话';
break;
}
var text = '<li><span class="left">'+ type +': '+ d.data[i].content +
'</span><span class="right">'+getTime(d.data[i].timestamp)+' 来自: '+d.data[i].fromarea+'</span></li>';
$('#notice ul').append(text);
}
...
}
</script>
<script type="text/javascript" src="http://v.t.qq.com/output/json.php?type=1&name=tinystrong&sign=8efce5b1f39e7a2f9a833387f82d02c1586ac456"></script>
1. 首先要声明一个名称为 weiboData 的函数(为啥要命名为weiboData,接着往下看...)
2. 加载一段 JS (实际上是JSONP啦)
3. 没了....
瞧,多简单啊,我们只要在 weiboData 函数里做处理就行了,
那有人会奇怪,光声明这个函数,那它啥时候被调用呢?
嗯,所以呢下面就要加载一段 js 了,js有三个参数
type,name,sign
这三个参数分别是
类型(1=微博,2=时间轴)
微博帐号
微博Sign(你无须管他是什么,从这里就可以得到 http://open.t.qq.com/home)
嗯,我们来分析一下这个 json.php 下面是内容,简单写一下
weiboData({"data":[{"content":"我们这些ring0的柔情,你们搞ring3的永远不懂!","count":0,"from":1,"fromarea":"腾讯微博","id":61634130877182,"image":null,"isvip":0,"name":"tinystrong","nick":"宅男小强","pic":"http://mbloghead.store.qq.com/mbloghead/e9bc30c5b118380aacc8","status":0,"timestamp":1324224245,"type":1})
JSONP是什么? 说白了就是JS
浏览器加载完 json.php 后会把他当js来执行
很明显他需要调用一个名叫weiboData的函数,并把后面的数据当参数传进去(这就是为啥上面要大家把函数命名叫weiboData的原因)
接着在我们这个weiboData里就能获取到后面的数据啦(OBJECT类型的)
啥..不懂>>>> 你火星了
啥..还是不懂>>>> 不懂神马 json.php 的内容么? 靠,这个文档我木有...自己分析吧...
微博API
通过广播站获取JSON数据利用jQuery实时获取数据,前台显示.
因为服务器端限制了Referrer,所以用PHP伪造了一个,嘿嘿~
至于效果,请大家查看我的首页.
API地址: http://www.tinystrong.com/microblog/用户名/密钥/jsonp=随机串
返回格式: JSON函数
Elegant Box 添加腾讯微博代码
公告栏部分 (外观->当前主题选项->公告栏):
<div id="microBlog">
<ul>
</ul>
</div>
<script type="text/javascript" src="http://www.tinystrong.com/t/tinystrong"></script>
<script type="text/javascript">
function AutoScroll(obj){
$(obj).find("ul:first").animate({
marginTop:"-16px"
}, 500, function(){
$(this).css({marginTop:"0px"}).find("li:first").appendTo(this);
});
}
$(document).ready(function(){
$.each(xdata, function(i, n){
var text = '<li><span class="left">'+ xdata[i].name +': '+ xdata[i].text +'</span><span class="right">'+ xdata[i].from +'</span></li>'
$('#microBlog ul').append(text);
});
$('#microBlog ul li[class=first]').remove();
setInterval('AutoScroll("#microBlog")', 3000);
});
</script>
