这篇文章早就想写了,一直没时间,拖了好久了,今天不熄灯,把剩下的写完就发了!!后面可能写的有点不太详细,有问题尽可以留言!!
这篇文章是对以前的一篇文章: 使用 jQuery 实现 wordpress 的 Ajax 留言 的一些补充和完善。主要针对 ajax 化后产生的一些问题,结合我后来进行的一些修改,给出基本的解决思路和方法,使这种方法能有更普遍的适用性,也会更加的灵活(效果就是我博客现在的样子)。希望对使用此方法的朋友能有所帮助,没有使用的你也可以看到一些 jQuery 的函数和技巧……
ajax 后产生的一些问题
ajax 有它的好处,但也有它的不足。如果使用了上面提到的方法,据我的经验,应该会出现以下的一些问题:
- 部分模版中每篇文章的第一条评论刷新才可以显示
- 新发的评论楼层数总是 #1,刷新后正常
- 文章留言数统计没有即时更新
- 留言用 alt 控制隔层显示不同样式时,ajax 时无效果,同样刷新后正常
基本上就这些问题吧,后两个其实都是小问题,一般大家也注意不到。但如果你追求完美的话,你可以试试去解决,而且往往就是一行代码的事。
解决思路及方法
我解决的方法都是从 JS 和 DOM 的层面去解决的,没有涉及到 PHP 和服务器的层面,当然也可以用 PHP 的方法在提交时重新从数据库中取值并更新,但因为貌似比较麻烦,就没有这么搞,目前也不会,呵呵!
下面一个个来解决:
首先第一个:每篇文章的第一条评论刷新才可以显示,这个问题的原因很容易理解,因为在 JS 中有这样一句:
就是向 id 为 thecomments 的元素中添加数据,而在有些模版中在文章没有评论时这个 id 为 thecomments 的元素是不存在的,即一般的 ol 元素,自然就不会添加元素,第一条评论就这样消失了,刷新后才正常。
解决方法:我想到的解决方法有两种:
第一种就是在没有评论时也让这个#thecomments 存在,具体的做法就要自己改下模版了。就像我现在的模版样,没有评论时显示一个No comments yet,然后在第一条评论提交时将这块隐藏就 OK 了!!
第二种方法就是用 JS 动态地添加这个 #thecomments ,(刚回去看代码,突然发现原来的代码里已经有了!!)
$('#pinglist').before('<ol id="thecomments"></ol>');}
如果 #thecomments 不存在,则在 #pinglist 前插入
,这里只需要注意那个 #pinglist 就行了!!
然后看第二个问题和第三个问题,这两个问题正好可以联系到一起解决。我的解决思路是看图:

图是丑了点啊!不过应该表达清楚意思了吧!就是当新评论提交之后,让页面上的总评论数先加一,然后再将值赋给新添加的评论的楼层数那里。这样显示出来就是正确的了。当然这样做还需要一些准备工作,就是将数字用专门的 span 来选择出来,以方便获取纯数字。见图片代码。第二个地方需要修改 comments-ajax.php 的相应部分。
于是,最终代码如下:
$('.ajaxcomments').text($('#commentnum').text()).removeAttr("class");
把上面的代码添加到 success 后面就 OK 了。最后的一个 removeArrt 是为了防止重复发表评论时两个 .ajaxcomments 都加一的情况出现。
最后一个问题我是用了 jQuery 的选择器 odd 实现的。
匹配所有奇数行,如果有 alt 属性刚删除。当然还可以写的更严密些!!我是偷懒了!!呵呵!
加强
1、最后如果你的博客中引入了平滑移动的代码,你还可以加一句:
自动滑动到最后一个 LI ,也就是最新发表的一个评论!!
2、你也可以去试试 jQuery blockUI plugin 这个插件,实现提交时的 loading 效果!!
到此,这个 wordpress 的 ajax 评论算是比较完善了。只可能还不支持 wordpress 2.7 的嵌套评论。这个估计很难……


















学习了
see see
试一下
试一下
AJAX显示楼层的问题作者你解说的那张图片显示不了,能不能更新下,刚好碰到这问题~~~但解说图片显示不了,不知道怎么解决~~~
感觉一下效果
小站不错啊
学习了,谢谢
[...] 很多人喜欢在WordPress中的评论系统中调用Ajax,因为这样会很方便。简单一个例子就是当你在页面内想边听音乐边留言时候(♫TINAting?),没有Ajax的评论就不好办了。如果你也是使用Ajax评论,你是否也会忽略了一些细节?这里推荐大家看Xiaorsz’s Blog最近的这篇文章:【关于 wordpress ajax 评论的补充和完善】。 [...]
[...] 原文转自:http://www.xiaorsz.com/improve-the-wordpress-ajax-comments/ 2009年4月19日14:17 标签: ajax, comments, Wordpress 订阅评论 发表评论 | Trackback « 100多个Twitter按钮和图标下载. 目前还没有任何评论. [...]
[...] Xiaorsz's Blog童鞋的教程写的很完善=》关于 wordpress ajax 评论的补充和完善这次在做的时候就参考这个。可以去看一下 [...]