我在登陆首页有个验证码功能,从网上找了好多种方式,都实验了一遍。在刷新整个页面的时候验证码都能很快的过来,但是如果我只点击图片本身刷新的时候就非常非常慢,代码普遍都是这样:
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位数字字母混合的方式。

解决方案 »

  1.   

    元芳,CSDN新论坛上线!你怎么看?
      

  2.   


    <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
    或许能帮你
      

  3.   

    url后边+一个随机数,这样就可以保证url不重复了
      

  4.   


    <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();
    };大概思想就是这样
      

  5.   

    感谢各位朋友的回复。
    我在提问的代码里面已经加了随机数,
    function refresh(obj) {
            obj.src = "/randomservlet?"+Math.random();
     }
    现在不是随机数的问题,而是点击图片刷新的时候非常慢,我用的是JSP。
    各位可以在本地测试一下,是否存在这个问题。
      

  6.   


    IE,FF 都一样的。自己顶!自己顶! 
      

  7.   

    其实你写的一点问题都没有。感觉慢是因为页面在展示的时候是整个jsp页面已经在服务器解析好后一次性写到页面上的。你以后每点击一次服务器还要重新解析下,再到页面上,所以感觉会慢一点,其实想像一下,刷新整个页面的时候要解析整个页面,而产生验证码只需要解析一个验证码,后者是比前者要快的。
    12306的比较快是因为在人少的时候,人多的时候肯定也不行。你的电脑和12306的服务器性能是没有办法比的。12306花几个亿做系统,服务器性能肯定是不错的。
    如果排除以下原因,可能就是你写的代码性能不佳,可以适应优化下。
      

  8.   


    这位朋友,你没看明白我的问题,单独刷新验证码很慢,而刷新整个页面反而很快。
    你可以在本地试试这个项目:http://download.csdn.net/detail/s478853630/4064638自己顶!自己顶!  
      

  9.   

    <img src ="XXX/XXservelt"  onclick="changCode(this)" >
    function changCode(obj){
       $(obj).removeAttr('src');
       $(obj).attr('src','XXX/XXservelt');
    }
    我曾经用上面的代码实现验证码 很快