今天接到访客carloschen的报告,称:“試過在別人網誌留言會重複發文好幾篇”。
如果您的blog也遇到了同样的问题,你可以直接跳到我这篇日志的结尾看解决方法。假如您有兴趣了解一下这个问题的成因,那么请往下看。
这个情况和使用的习惯有关。在评论提交处的结尾,是输入验证码的输入框。如果填写完所有信息后,点击下方的“提交”按钮提交评论,那是不会出现问题的。评论在经过处理后会马上反应在页面上,这是符合预期效果的。
但如果用户也可能有这样的习惯,那就是在填完所有信息后,如果最后一个输入框是单行的文本框,那么直接按键盘上的回车键就可以提交了。想当初刚刚上网的时候,这个还是老鸟作为一个“技巧”传授给我的。IE和Firefox均支持这个特性。
不过问题也产生了。当按回车键在验证码输入框内直接提交这个评论的时候,浏览器没有执行点击“提交”按钮时执行的动作,这样就越过了Ajax提交这个步骤,直接提交了评论,也就是最平常的“有刷新”的提交方式。
这也没什么,顶多就是刷新了一次,不如Ajax这么迅速就能看到评论的效果罢了。但是,由于部分模板在form的onsubmit事件中增加了触发ajax回复的事件,这样就导致了提交两次的问题!首先是在按下enter键的一刹那,触发了onsubmit事件,评论提交了一次,又因为浏览器在执行此次事件后继续了提交动作,因此评论又在无ajax事件的情况下再提交了一次。这就是产生两个相同评论的原因。(可用IE重现。)
解决起来也容易,那就是去掉form的onsubmit 事件,然后把form的action地址改为与按下提交按钮的事件相同的javascript就可以了。
解决方法:
在模板的 elements.php 中,查找到
做如下修改
如果模板的此位置还有这样的句子:
把它删除即可。也就是说,最后这里应该都是这样的:
修改后,无论是按提交按钮,还是在验证码输入框内按回车键提交,都只会提交一次,而且都会触发Ajax回复事件。
如果您的blog也遇到了同样的问题,你可以直接跳到我这篇日志的结尾看解决方法。假如您有兴趣了解一下这个问题的成因,那么请往下看。
这个情况和使用的习惯有关。在评论提交处的结尾,是输入验证码的输入框。如果填写完所有信息后,点击下方的“提交”按钮提交评论,那是不会出现问题的。评论在经过处理后会马上反应在页面上,这是符合预期效果的。
但如果用户也可能有这样的习惯,那就是在填完所有信息后,如果最后一个输入框是单行的文本框,那么直接按键盘上的回车键就可以提交了。想当初刚刚上网的时候,这个还是老鸟作为一个“技巧”传授给我的。IE和Firefox均支持这个特性。
不过问题也产生了。当按回车键在验证码输入框内直接提交这个评论的时候,浏览器没有执行点击“提交”按钮时执行的动作,这样就越过了Ajax提交这个步骤,直接提交了评论,也就是最平常的“有刷新”的提交方式。
这也没什么,顶多就是刷新了一次,不如Ajax这么迅速就能看到评论的效果罢了。但是,由于部分模板在form的onsubmit事件中增加了触发ajax回复的事件,这样就导致了提交两次的问题!首先是在按下enter键的一刹那,触发了onsubmit事件,评论提交了一次,又因为浏览器在执行此次事件后继续了提交动作,因此评论又在无ajax事件的情况下再提交了一次。这就是产生两个相同评论的原因。(可用IE重现。)
解决起来也容易,那就是去掉form的onsubmit 事件,然后把form的action地址改为与按下提交按钮的事件相同的javascript就可以了。
解决方法:
在模板的 elements.php 中,查找到
<form name="visitorinput" id="visitorinput" method="post" action="{actionurl}">
做如下修改
<form name="visitorinput" id="visitorinput" method="post" action="javascript: ajax_submit('{jobnow}');">
如果模板的此位置还有这样的句子:
onsubmit="ajax_submit('{jobnow}');"
把它删除即可。也就是说,最后这里应该都是这样的:
<form name="visitorinput" id="visitorinput" method="post" action="javascript: ajax_submit('{jobnow}');">
修改后,无论是按提交按钮,还是在验证码输入框内按回车键提交,都只会提交一次,而且都会触发Ajax回复事件。
FAQ系统开放
[重申]请选择正确的软件




但是我不懂SQL,不知道应该怎么修改。能不能请Bob再有时间的时候帮忙出个补丁之类的,我想有问题的应该不止我一个。先谢谢了!
只是显示有几条,计数还是只有1条。
从 1.7 升到 2.0 时,可能是转换程序的问题(不确定),所有用户信息没有正确转入,ID 号码有些混乱和重复。而重复的留言是因为留言者的用户 ID 和别人的有重复,比如如果用户 ID 是 5,而有 8 个其他用户的 ID 都是 5 的话,留言就会重复 8 次。要解决这个问题,只要去数据库把 ID 重新分配一下应该就可以了。不过不知道以后 Bo-Blog 的程序里有没有可能加入一些检查数据的功能,确保 ID 不会重复呢?
有没有办法将多出来的几个留言或是评论删除呢?我发现虽然同样的评论显示了四次,但数据库里只有一条评论,并没有重复,如果删除一个的话可能将其它的也都删除。那这四条同样的评论是存在哪里的呢?
内容:若您有升級做RC3版的,請check一下當回覆完不要暗按提交鈕,而直接按enter鍵的話,是否會連跑出兩筆同一時間的回覆。若有的話可參考以下兩篇或直接依照範例直接修改您的elements.php檔。Bo-Blog 2.0一個使用習慣導致的問題 - Carlos Life Book一個用戶習慣可能導致的問題 - Bob的部落格我比對了它之間的差異如下:(elements.php檔)請先找到這段$elements=
内容:這是在Jaciyeh網誌升級到Bo-Blog 2.0 RC3所遇到的問題。昨天到他的網誌留言評論一篇文章,沒想到卻重複發了好幾篇,重新再試一次,結果還是一樣,反而他自己的評論都很正常,於是向Bob反應這個問題,Bob也..