日期:2014-05-19  浏览次数:20946 次

如何快速的生成验证码?
我在登陆首页有个验证码功能,从网上找了好多种方式,都实验了一遍。在刷新整个页面的时候验证码都能很快的过来,但是如果我只点击图片本身刷新的时候就非常非常慢,代码普遍都是这样:
function refresh(obj) {
        obj.src = "/randomservlet?"+Math.random();
 }

 <input type="text" name="randomCode"/><img title="点击更换" onclick="javascript:refresh(this);" src="/randomservlet"><br/>

我去12306网站的登陆页面看了一下,12306的验证码图片刷新就非常快,点击一下基本上都是一秒之内就换,请问这是怎么实现的?各位是否有相关的代码?网上提的几种方式都不行。
PS:我的验证码方式也非常简单,跟12306是一样的,4位数字字母混合的方式。
------最佳解决方案--------------------
<img src ="XXX/XXservelt"  onclick="changCode(this)" >


function changCode(obj){
   $(obj).removeAttr('src');
   $(obj).attr('src','XXX/XXservelt');
}


我曾经用上面的代码实现验证码 很快
------其他解决方案--------------------

<p>
  <label class="nature">验证码:</label>
  <input type="text" id="txtCode" name="checkCode" maxlength="4" style="width:78px;margin-right:5px;" onkeyup="doLogin1(event)"/>&nbsp;
  <img src="/app/pm/servlet/chart_checkCode.svl?random=0.47210467518321286" id="imgCode" title="点击更换图片"
  style="vertical-align:bottom;cursor:pointer;" onclick="this.src='/app/pm/servlet/chart_checkCode.svl?random='+Math.random()"/>
 </p>



不会很慢呀,只要保证每次请求后台servlet的url都是不同的,就能解决你的问题了,


如果还有疑问,
http://download.csdn.net/detail/s478853630/4064638
或许能帮你
------其他解决方案--------------------
url后边+一个随机数,这样就可以保证url不重复了
------其他解决方案--------------------
最好的方法就是产生随机数
------其他解决方案--------------------

<img src="verifyCode.action?date="+new Date() id="imgCode" title="点击更换图片"
      style="cursor:pointer;" />
document.getElementById("imgcode").onclick = function() {
//每次请求需要一个不同的参数,否则可能会返回同样的验证码    
//这和浏览器的缓存机制有关系,也可以把页面设置为不缓存,这样就不用这个参数了。
document.getElementById("imgcode").src = "verifyCode.action?date=" + new Date();
};

大概思想就是这样
------其他解决方案--------------------
其实你写的一点问题都没有。感觉慢是因为页面在展示的时候是整个jsp页面已经在服务器解析好后一次性写到页面上的。你以后每点击一次服务器还要重新解析下,再到页面上,所以感觉会慢一点,其实想像一下,刷新整个页面的时候要解析整个页面,而产生验证码只需要解析一个验证码,后者是比前者要快的。
12306的比较快是因为在人少的时候,人多的时候肯定也不行。你的电脑和12306的服务器性能是没有办法比的。12306花几个亿做系统,服务器性能肯定是不错的。
如果排除以下原因,可能就是你写的代码性能不佳,可以适应优化下。
------其他解决方案--------------------
元芳,CSDN新论坛上线!你怎么看?
------其他解决方案--------------------
引用:
XML/HTML code12345678<p>      <label class="nature">验证码:</label>      <input type="text" id="txtCode" name="checkCode" maxlength="4" style="width:78px;margin-right:5px;" onkeyup="doLogin1……




引用:
Java code12345678<img src="verifyCode.action?date="+new Date() id="imgCode" title="点击更换图片"      style="cursor:pointer;" />document.getElementById("imgcode").onclick = function() {        ……