日期:2014-05-18  浏览次数:20436 次

无刷新图片验证码
无刷新图片验证码
 
 网上找了很多图片验证码的代码,但都是 单独的 一个函数。

  如果要变化一下(有时看不清楚) 则要刷新整个。

 如何做到无刷新呢????

 网上的很多代码 都是直接 生成图片,无返回值。

 怎么通过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();

  }

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