无刷新图片验证码
无刷新图片验证码
网上找了很多图片验证码的代码,但都是 单独的 一个函数。
如果要变化一下(有时看不清楚) 则要刷新整个。
如何做到无刷新呢????
网上的很多代码 都是直接 生成图片,无返回值。
怎么通过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" />看不清楚请点击图片刷新