> 这段代码是一个通用的 AJAX 评论提交代码,主要功能在通用和无刷新,但是加速发表的效果不是很好。
> 理论上来说,如果你懂一点 JQUERY,那么只要稍稍做一下修改,几乎所有不同的程序都可以使用的。

一. AJAX发表评论的各种程序通用版代码:
<script type="text/javascript" src="<?php bloginfo('template_directory'); ?>/jq.js"></script>
<script type="text/javascript" src="<?php bloginfo('template_directory'); ?>/ajax.js"></script>
//首先下载一个官方的 JQ 代码库放到主题文件夹中,并把文件名修改为 jq.js ~
//可以过这个地址下载 - http://code.jquery.com/jquery-1.4.2.min.js ~
<?php wp_head(); ?>
//在 Header.php 中这行代码上方插入上面的代码,载入 JQ 库与支持 AJAX 评论的 JS 文件 ~
<?php comments_template(); ?> //在 page.php single.php 两个文件里,找到上面的代码,修改成下面这样 ~ <div id="reloadComment"><!--reloadComment--><?php comments_template(); ?><!--reloadCommentEnd--></div> //围绕着评论代码添加一个DIV,并用 Html 的注释方法来添加两个标记 ~
#loading{background:#F2F2F2;border:1px solid #ccc;margin:10px auto;display:none; line-height:40px; padding-left:10px;}
//然后增加一个 loading 的载入提示框,在提交评论的过程中显示 ~
#loading{background:#F2F2F2 url('/apps/myimg/tmp/loading.gif') no-repeat 15px 50%;padding-left:40px;border:1px solid #ccc;line-height:40px;margin:10px auto;}
//当然也可以增加一个 gif 载入图片,把这段代码里面的图片地址修改一下即可 ~
<div id="respond"> <div id="loading"></div> <h2><?php comment_form_title( '发表评论', '回复 %s' ); ?></h2> <div class="cancel-comment-reply"> <small><?php cancel_comment_reply_link(); ?></small> </div> //在 respond 的 div 中增加 loading 提示框的 div ~
//注意!小邪提供的所有代码最好去除注释后再用,有时候可能注释位置会影响到代码执行效果 ~
function reloadComments(data){
var reloadStar = data.indexOf('<!--reloadComment-->');
var reloadEnd = data.indexOf('<!--reloadCommentEnd-->');
//通过刚才添加的标记切割新的源代码
if(reloadStar>=0){
jQuery("#reloadComment").html(data.substring(reloadStar,reloadEnd));
bind();
}
else
jQuery("#loading").fadeOut('fast').html(data).css("background","#FFACAC").fadeIn('slow');
//显示错误提示
}
function realodCommentsError(data){
jQuery("#loading").fadeOut('fast').text(data).css("background","#FFACAC").fadeIn('slow');
//显示错误提示
}
function bind(){
jQuery("#submit").click(function(){
jQuery("#loading").fadeIn('slow').text("Sending .. Please wait a moment ....").css("background","#F2F2F2 url('/apps/myimg/tmp/loading.gif') no-repeat 15px 50%");
jQuery.ajax({
type:'POST',
dataType:'text',
url:jQuery("#commentform").attr("action"), //获取提交目的地址
data:jQuery("#commentform").serialize(), //处理数据
success:function(data){reloadComments(data);},
error:function(dataxml){
var eStart=dataxml.responseText.indexOf('<p>');
var eend = dataxml.responseText.indexOf('</p>');
realodCommentsError(dataxml.responseText.substring(eStart+3,eend));}
});
return false;
});
}
jQuery(document).ready(function(){
bind();
});
//这些就是 ajax.js 里面的内容了,如果不需要 gif 载入提示图片,去除下面的代码
//url('/apps/myimg/tmp/loading.gif') no-repeat 15px 50%
二. 关于这段代码:
> 理论上来说,只要稍作修改,基本上各种程序都可以用。因为这个原理只是防止刷新,并不加快速度。
> 其实只是把刷新的步骤通过 AJAX 搞定,然后从刷新之后的代码里,提取出关于评论的那部分源代码。
> 然后把原来页面关于评论的这部分源代码用新代码替换掉,就达成了 AJAX 无刷新提交评论的效果。
> 并不像小邪现在在用的 WILLIN 写的代码一样,还需要在 comments-ajax.php 里面模仿模板评论样式。
> 所以理论上来说,如果你懂一点 JQUERY,那么只要稍稍做一下修改,几乎各种程序都可以使用的。
> 因为上面的这些代码是从一个 5d6d 论坛群的其中某个子论坛上面的转载帖子的附件里面提取出来的。
> 当时楼主转载的时候木有写任何的原作者,所以暂时没有办法知道原始的出处。
三. 尾记:
> 最近有盆友灰常无聊了呐,o(* ̄▽ ̄*)ゞ,开启 “评论者必须曾有一条评论被批准”,表示毫无鸭梨。

:biggrin: :biggrin:
@柳城 , :exclaim: :exclaim: ~
板凳……
@小闇 , 哎,要蛋定,沙发上的那个是坏淫 ~
@小邪 , :exclaim: 好不容易等来美女。
@柳城 , 老衲闪也!|(·_·) |·_·) |_·) |·) | )

有点技术含量,不怎么看得懂
@宁波网站建设 , 。。。。。╮( ̄▽ ̄)╭
代码很精简~~
@林木木 , 呵呵,感觉有条理的代码都能比较容易精简下来 ~
我那边没弄这个限制..然后一堆的评论
@mice , 。。。。啥都不说了
:well: 你是不是被我打扰怕了...都不上Q了..
@mice , 没呢,我是出远门了一趟 ~ 有点麻烦事情,不过后来搞定了 ~

才回来,电脑木有带去来着 ~ 睡一觉再弄其他事情吧 ~
@mice , 麦斯很有自知之明~
@小松 , 我闪!|(·_·) |·_·) |_·) |·) | )
@mice , :biggrin: 你太搞笑了
先发一条不语。。
@QiQiBoY , o(* ̄▽ ̄*)ゞ ~ 嘿嘿 ~
我囧。。。你的也还是提交到comments-ajax.php。。。直接将ajax数据提交给wp-comments-posts.php,会只返回格式化后的新评论吗?
我没试过,不过感觉会返回整个新页面,要取得新评论,估计得过滤一下,但是这样返回的数据量其实就蛮大了。所以还不如直接用个comment-ajax.php只输出新评论了。。。
我目前还是使用comments-ajax.php这个,JS是自己重写的原生JavaScript版。
@QiQiBoY , 直接提交过去不会返回格式化的评论的 ~
只是等于跳过了刷新步骤,直接把提交之后显示的页面里 ~
的源代码,评论部分代码,根据html注释作为的标记切割下来 ~
再替换原先的代码 ~ :biggrin:
@小邪 , 所以说这样提交成功后返回的数据量太大了,而多一个cpmments.php文件,却可以减少数据返回量
@QiQiBoY , 多一个comments-ajax.php
@QiQiBoY , 嘿嘿,所以及时醒悟鸟 ~ --\(˙<>˙)/-- ~
现在换成comments-ajax.php咯 ~ o(* ̄▽ ̄*)ゞ ~
这机器人很诚实。。。
@路人假 , 哈哈哈,是的,很好玩 ~

不懂jq,来捧个场,willin的那个ajax很受用啊
@zhy , 恩,willin写得很全面的代码,各种情况都能处理 ~
现在很流行ajax评论。
@ForRSS , 恩恩,又快又方便 ~ 不要刷新最爽了 ~
haha.. 我来试下你的 AJAX 评论 :biggrin:
@loo2k , 乖乖被测试中 ~

来小邪这里来测试下评论的发表,本消息来自客户端机器人发送! 哈哈……娱乐娱乐……
@小邪 , 坏淫应该切JJ ~

我只是来试下... :biggrin:
@MOPVHS , 阿门 ~ 这次木有用上面的代码,那个通用版速度不变的 ~
@小邪 ,
@久酷 ,
~~
我需要这个,来研究研究~
@小松 , 嘿嘿,很高兴对你有用处 ~

@小邪 , 貌似用不了,移植不了~
@小松 , 哎,有些地方的修改难度还是蛮高的 ~
jQuery.ajax({ 里面的提交文件,和参数获取都得修改的 ~
所以必须熟练使用jquery元素选择器 ~
@小邪 , 是啊,悲剧啊~
最后那张图的效果我上次做活动也撞到过 :exclaim:
@hzlzh , 。。。。听说是mice的盆友弄得机器人,很有才 ~
@小邪 , 那个机器人真的很强大,瞬间的高爆发性好~对付博客活动专用
@hzlzh , 。。其实想说闲得蛋疼 ~
啊哦!最后那张图很强大哈!呵呵
@joyla , 恩恩,开启 “评论者必须曾有一条评论被批准”之后 ~
~
还是表示无鸭梨
@小邪 , 我的博客这两天也来垃圾评论了!我插!
@joyla , 啊喔,也是这个么?无语了 ~
现在的主题没以前的好看咯。
@Kada , 嘎?!你还是觉得原先的主题好看?
不过原先的主题评论一多,就要拉半天滚动条滴 ~
折腾得好多人蛋疼 ~
短小精悍 非常有力
@飞晏 , 嘿嘿,应该是非常给力 ~

厉害!
博主的这个代码高亮是如何实现的呢?
@简单点 , 用的是 wp-stntax 插件 ~
@简单点 , 啊哦,错鸟,是 wp-syntax ~
很好
@liheqi168 , 嘿嘿,谢啦!!☆⌒(*^-゜)v
@liheqi168 , 我表示测试~
@xc , :exclaim: :exclaim: ~
值得支持
@liheqi168 , :redface: :redface: (*/ω\*)[脸红掩面] ~
这个玩玩,不太懂什么ajax,唉
@zwwooooo , 呵呵,这个通用方法只是防刷新 ~
速度很慢的,以前说增加了ajax就是用了这个 ~
不过后来换了专门的 comments-ajax.php ~
感觉这个自己做了个不返回新评论包的,玩儿,不知道会不会出错
@zwwooooo , 嘿嘿,看你那样速度很快嘛 ~
@小邪 , 感觉一般般,也不是特别快,不知道是否我那访问博客速度问题
@zwwooooo , 恩,提交评论最主要花时间的地方是回复邮件通知 ~
要等邮件发出去,这个过程才算执行完 ~
我的博客还没有弄ajax评论,暂时还没时间折腾博客。。 :exclaim: :exclaim:
@fatkun , 呵呵,工作辛苦啦 ~
:biggrin: :biggrin: :biggrin: :biggrin:
@阿修 ,
相对傻笑 ~
@小邪 ,

@阿修 ,
笑得小弟弟抽筋鸟 ~
好深奧 :biggrin:
@渃 , 呵呵,还好啦 ~ :redface: :redface:
昨天才用上ajax,willin大濕的速度比較快
@Ygs , 恩恩,能有专门的comments-ajax.php来返回数据最好了 ~
那样最快,如果没办法或者不会做这个的话 ~
用小邪文章里面的代码比较好,速度慢点,不过兼容性很高 ·
@小邪 , 留着备用
结尾处哪个怂人干的啊!我最怕就是垃圾评论了,拉出去,弹jj。
@rusaer , ╮( ̄▽ ̄)╭,天知道 ~
为了我你写了这篇文章,赶鸡不尽吖~
@CXM , 呵呵,不客气,小邪最开心的就是写的东西对别人有帮助鸟 ·
我也来测试下
@J.Min , 荒淫测试,乖乖做小白鼠 ~ :biggrin: :biggrin:
路过,看不懂
@dudo , 嘿嘿,看不懂的时候要蛋定 ~

测试一下~
@laowi , 乖乖被测试,嘿嘿 ~
哇 漂亮
@书香阁免费网 , 嘿嘿,谢谢 ~
不如直接用.load()啊?可以直接只要回复部分的div,反正都是返回的是页面,干脆刷新全部评论算了
@winy , 额,直接用load的话,就没办法post了 ·
又是JQ
@亿品元素 , 挺住吧,嘿嘿 ~
这个干嘛的 :biggrin:
@BoKeam , 额,ajax滴干活 ~
头像太麻烦了,虽然有jq的函数,但函数又一大串……放弃头像,除非有其他方法,如调用php函数……
@zwwooooo , 额,我看看,写新文章去鸟,试图解决这个问题 ~
@小邪 , 我用回willin的comments-ajax.php,精简了一些不必要的代码
@zwwooooo , 呵呵,好的,那样应该更好了 ~
我这个是送给typecho的盆友改造用的 ~ :redface: :redface:
等我自己会写ajax了就把你给ajax了

@N , 莫非要切他JJ……
@阿修 ,
老衲怕怕 ~~
@N , (PД`q。)·。'゜ 我闪!|(·_·) |·_·) |_·) |·) | ) ~
。。。。。。突然想起来
老衲跑得了和尚 跑不了庙 ~
还是躲尼姑庵里面安全 ~ o(* ̄▽ ̄*)ゞ
:rolleyes: 好复杂,学习不了,只能赞一个
@就抢网 , 呵呵,谢谢支持 ~~~
有待研究啊,至今没有吃透Ajax
@小松 , 嘿嘿,这个技术是必备的呦 ~
我也表示那朋友是我那边的,那天我被弄了60多条 :exclaim:
@yetone , 。。。原来受害范围那么大鸟 春哥保佑你
我还是乖乖的用Willan的吧。。。 :exclaim: 看不懂啊。弄个Gravatar缓存都弄了半天。。。
@FORECE , 能用willin的就用willin的喔 ~
小邪这个是兼容性强 ~ 不过并没有willin那个那么适合wp的 ~
恩,取走了,去试试。
@diyidu , 呵呵,祝你玩得开心 ~
这么好,我来看看
@Ray Chow ,这个在提交之后也不能立刻出现回复按钮啊……
@Ray Chow , 啊?我现在用的不是这个 ~
这个本来是想送给typecho的盆友的 ~
对代码有点小白呢,一时还消化不了哦,不过这个很有用啊
@ChristianAudigier , 呵呵,有兴趣就多看看吧 ~
参考一下,随便测试
@良心发现 , 嘿嘿,荒淫随便玩 ~~~
呵呵,这个教程比较实用的,谢谢
@Code之行人 , 呵呵,很高兴对你有帮助呐 ~
最近垃圾评论甚嚣尘上
@指舞六弦 , 恩,最近垃圾评论还是洪水似地,真无聊他们 ~
啊哦!很荣幸,你被盯上了!呵呵
@joyla , (*/ω\*)[脸红掩面],魅力挡不住啊 ~
@小邪 , 呵呵,下午来看看!
本人对代码不是懂,该回去好好补补了
@airmax95 , 呵呵,有兴趣的话就补补吧 ~
文章开头交代的不是很清楚啊
@卢松松 , 哎,太复杂鸟,以后改进嘿嘿 ~
不错 改天也整整我那个博客
@WordPress啦 , 哈哈,你的博客现在是挺有官方的严肃感 ~
奇怪,我用chrome看你上面代码都是重叠的……
@Qing , 表吓小邪,额,小邪也是在用chrome的 ~
小邪这些天咋也没更新啊~我还没抢到过沙发呢~
@小松 , 刚刚到荷兰,搬家和一大堆事情,折腾死小邪鸟 ~
GMT+1时间的晚上应该能更新一篇呢 ~
@咔咕图聊 , 呵呵,咱不会写生活随笔,只会代码,各位挺住 ~
@小邪 , 哈哈!!
我们一直都是那么坚挺!
:exclaim: 看的有点头晕了
@大鲨鱼 , 要蛋定,呵呵 ~
小邪的主题越来越没有以前好看了。
@Kada , 杯具了 ~ 阿门 ~
:redface: :redface: :redface:
我表示 一点不懂
@微奇生活 , 额,蛋定蛋定,习惯就好鸟 ~ ╮( ̄▽ ̄)╭
@nfl football jerseys , 额,对于这个,小邪木有办法额 ~
@joyla , 蛋定,蛋定,呵呵 ~
@小邪 ,

我来试试~
@阿达 , 荒淫随便玩 ~ o(* ̄▽ ̄*)ゞ
再试试 :redface:
要是能实现提交留言后还能修改就好了~~ :biggrin:
@阿达 , 呵呵,Willin 是有提供这个功能的,不过小邪去掉了 ~
为了精简一下代码 ~ :redface: :redface:
spammer好 :exclaim:
@有点蓝 , 额?

@小邪 , 我是说,用这你的这个效果后,spammer一定会好囧的。。。
@有点蓝 , 喔喔,原来如此,嘿嘿嘿 ~
Spammer鸡冻了!
看到上面那个框,很想打字。。。。。结果发现是图片
@Fantasy027 , 嘿嘿嘿,握手握手,你是想写代码吧?

小邪童鞋,能求你的comments-ajax.php和js吗?我照着willin的安装提示,评论模式my-theme也套进去,却出错了,~~~~大部分嵌套都正常,就是评论提交的时候出现错误,无法提交,然后闪一下404界面~~~悲剧啊~~~麻烦帮帮忙~非常感谢
@老曦 , 解决了~~原来是代码没放在header,被我放在footer导致的~~我晕死~~~

@老曦 , 囧,淡定淡定,很多代码必须放在顶部的喔 ~
testing測試測試

@Martin ,
哎呀哎呀 ~
@小邪 , 不知道可不可以分享一下你這留言的source code 給小弟
@Martin , 早就有了呢 ~
在 - http://www.evlos.org/work/
@小邪 , 那個cmtmover就是了嗎??? 但那不是用來transfer comment的嗎???
@Martin , 饿,不好意思没看清,留言源码?

如果说的是模板的话,直接去作者那里下就好咯 ~
小邪有保留版权文字的喔 ~
试试,效果不错收藏起来,慢慢研究
@Mutnyy , 喔,这个效果小邪没在用,毕竟通用版效率不会比专用的高呢 ~
@小邪 , 小邪现在用的也不错,也不用刷新页面,呃5小时前,凌晨1点?注意休息啊
@Mutnyy , 小邪现在在欧洲时区 ╮(╯▽╰)╭,早上好喔。
小邪睡觉去了 (~﹃~)~zZ。。
@Willin Wang , 嘻嘻,感谢Willin大师的支持,不过这个可不能课您老那个比,这个虽然通用性超强,但是速度很慢的。╮(╯▽╰)╭。