* 2008年10月的日志

利用服务器返回的header来传输数据

在Ajax编程时,经常需要从服务端获取数据。通过情况下,我们是直接把要传输的数据放在response正文中,再用responseText或者responseXML来得到内容。最近偶然发现,有时候也可以把数据放在header里,而且一些情况下这样做更有优势。

header是服务器以HTTP协议传送HTML资料到浏览器前所送出的字符串,在php中我们可以这么发送自定义header:

header("author:Jerry Qu");

然后在客户端,正常的创建一个Ajax请求,所不同的地方是callback中获取数据改成:

var a = new Ajax();
a.get("test.php",function(){
    
alert(a.req.getResponseHeader("author"));
});

这样就能取到author的值了。

Continue Reading »

写了一个显示友情链接RSS的WP插件

前几天发现一个WP插件:WordPress Plugin Live Blogroll,能在鼠标悬停博客友情链接上方时显示一个浮动层,来展示好友的最新文章。这么好玩的插件,怎能放过?我马上下载安装,发现还是有问题:一是样子不够帅;再者部分国内的RSS不能正常读取。于是我就产生了自己动手写一个类似插件的念头。

第一步要从链接地址中自动获取RSS地址,幸好现在大多数的博客都遵循一个统一的标准来标识RSS入口。如:

<link rel="alternate" type="application/rss+xml" title="JerryQu的小站 RSS Feed" href="http://feed.qgy18.com" />

只需要查找type=”application/rss+xml”的link标记的href属性就可以了。在php中用preg_match_all方法很容易就可以匹配出来。

然后,就可以用file_get_contents取到xml,之后用simplexml对象来解析。值得注意的是,一定要把取回的xml缓存起来,就现在的网络情况来看,实时取是不太现实的。我是把xml直接生成文件来缓存的,根据文件的最后修改时间判断是否过期。前端用JS来异步获取数据,生成浮动层,浮动层的外观是仿照MSN联系人Tip布局的,加了一个小箭头来指示当前显示的是哪条链接。

具体效果可以在本页面右侧链接处查看。现在只是实现了功能,插件的配置页还没有完成。

下载地址:http://www.qgy18.com/g/?id=2 (累计下载:次)

QGYWEBIM(php+mysql版)提供下载

写完PHP版的QGYWEBIM也有一个多月了。这期间没测试出什么大毛病,加上最近不少人问我要PHP版的代码,就整理了一下提供下载了。相比之前的ASP版本,有几处小变动,在这里简单说明下:

1.支持了匿名用户。其实这个小功能是当初为了方便那些想要帮忙测试而又不想注册帐号的同学加上的。没有好好的设计,没太多实用性,就没有提供一个管理匿名用户的入口。如果你确实想提供匿名用户登录功能的话,可以参考这个帖子

2.改进了查找好友的方式。之前很多人跟我反映查找好友太不方便了,确实只能通过email地址来添加好友很不友好,尽管MSN一直如此。现在好了,我在这个版本中把查找好友的功能稍微改进了下,除了可以精确查找,还可以像QQ一样根据一些条件模糊匹配。ASP版的我也改了,只需要替换两个文件就可以了。

3.合并了一些图片。众所周知,将一些小图片合成一张大图可以显著的减少连接数,提高效率,这也就是人们常说的css sprites技术。但是为什么之前的版本中那么多的小图没有合并呢?那是因为我太懒了,合成一张大图片还要算像素太麻烦,哈哈。不过呢,我最近发现了一个很好的在线工具,它可以自动帮你把小图合并,并帮你算好像素,于是我就象征性的把其中一些小图片合并了一下,免得被人鄙视。。。

下载地址:http://www.qgy18.com/g/?id=1 (累计下载:次)

一些相关链接:

QGYWEBIM运行截图:http://www.qgy18.com/ablum/?d=5176709877654128385

PHP+MySQL版测试地址:http://www.qgy18.com/lab/webim/

ASP+Access版测试地址:http://old.qgy18.com/webim/

说明文档:http://old.qgy18.com/webim/readme.html