无刷新图片验证码
 
 网上找了很多图片验证码的代码,但都是 单独的 一个函数。   如果要变化一下(有时看不清楚) 则要刷新整个。 如何做到无刷新呢???? 网上的很多代码 都是直接 生成图片,无返回值。 怎么通过ajax 异步获取??? 如以下代码就是一个简单的图片验证码生成函数,最终生成的是图片。没有返回值???? 能做到有返回值吗?private string generateCheckCode(int length)
    {
        char[] constant ={ '0','1', '2', '3', '4', '5', '6', '7', '8', '9', 
            'a', 'b', 'c', 'd', 'e','f','g','h','i','j','k','u','m','l','o','p','q','r','s','t','u','v','w','x','y','z',
        'A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z',};        StringBuilder checkcodes = new StringBuilder(62);
        Random rd = new Random();
        for (int i = 0; i < length; i++)
        {
            checkcodes.Append(constant[rd.Next(62)]);
        }
        return checkcodes.ToString();
    }    //生成验证码图片
    //方法一
    private void validatecode(string code)
    {
        Bitmap img = null;
        Graphics g = null;
        MemoryStream ms = null;        int gwidth = code.Length * 12;
        img = new Bitmap(gwidth, 25);
        g = Graphics.FromImage(img);
        //背景颜色
        g.Clear(Color.White);
        Font f = new Font("Arial Black", 10); //文字字体
        SolidBrush s = new SolidBrush(Color.Black); //文字颜色        g.DrawString(code, f, s,3,3);
        ms = new MemoryStream();
        img.Save(ms, ImageFormat.Jpeg);
        Response.ClearContent();
        Response.ContentType = "image/jpge";
        Response.BinaryWrite(ms.ToArray());
        g.Dispose();
        img.Dispose();
        Response.End();    }

解决方案 »

  1.   

    使用Session或者Cookies保存你的code的值...然后在填入验证码后,在后台比值就好了...ajax再返回一个标志就行了...
    假设你的验证码图片的地址为scode.aspx,则可以在页面中插入
    <img alt="点击图片刷新验证码" src="scode.aspx" onclick="this.src='scode.aspx?r=' + Math.random()" />
    刷新验证码就可以不用刷新整个页面了.
      

  2.   

    <img height="23" alt="看不清楚?请点击刷新" border="0" onclick="this.src=this.src+'?'" src="validate.aspx" style="cursor: pointer" />看不清楚请点击图片刷新