刚在做无刷新提示注册的时候,发现个奇怪问题,求解

quickboy19821982 2010-07-09 04:52:06
在用户输入一个用户名的时候,无刷新查询是否存在该用户,存在则提示用户已存在
代码是这样的

if (this.frmreg.username.value!="")
{
if (this.frmreg.emailname.value!="")
{
username=this.frmreg.username.value+"@"+this.frmreg.emailname.value;
var xmlhttp;
try
{
xmlhttp=new ActiveXObject("Msxml2.XMLHTTP");
}
catch (e)
{
try
{
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
catch (e)
{
try
{
xmlhttp=new XMLHttpRequest();
}
catch (e)
{
}
}
}


//创建请求,并使用escape对username编码,以避免乱码
xmlhttp.open("get","checkuser.asp?username="+escape(username));
xmlhttp.onreadystatechange=function()
{
if(4==xmlhttp.readyState)
{
if(200==xmlhttp.status)
{

if (xmlhttp.responseText=="yes")
{
msg="此用户名已经存在";
color="red";
}
else
{
msg="此用户名可以注册";
color="#009900";
}
}
else
{
msg="网络链接失败";
}
var ch=document.getElementById("checkuser");
ch.innerHTML="<font color="+color+">"+msg+"</font>";
}
}
xmlhttp.send(null);
//return false;
}
}

然后checkuser.asp是查询用户的

set rs = Server.CreateObject("ADODB.Recordset")
strsql="select * from users where username='"&request("username")&"'"
rs.open strsql,cnn,1,1
if not rs.eof then response.Write "yes"
response.End()
rs.close
set rs=nothing
set cnn=nothing


然后我发现个问题:
打开浏览器后,输入用户名,能够查询出来,在sqlserver的运行监视器里也能看到有sql语句在执行,然后我要是重新输入了老的用户名,那么它就不会再次去搜索数据库了,而是直接显示结果
除非重开浏览器,否则对曾经搜索过的用户名不会再次搜索
求产生这现象的原因和解决办法
...全文
65 点赞 收藏 4
写回复
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
ChinaXtHuLang 2010-07-09
[Quote=引用 1 楼 net_lover 的回复:]

xmlhttp.open("get","checkuser.asp?username="+escape(username));
改成
xmlhttp.open("get","checkuser.asp?username="+escape(username) + "&x=" + (new Date()));
[/Quote]
good
回复
quickboy19821982 2010-07-09
谢了,这样确实解决了。。。这就结贴
回复
孟子E章 2010-07-09
是你的页面缓存; 了
回复
孟子E章 2010-07-09
xmlhttp.open("get","checkuser.asp?username="+escape(username));
改成
xmlhttp.open("get","checkuser.asp?username="+escape(username) + "&x=" + (new Date()));
回复
发动态
发帖子
ASP
创建于2007-09-28

2.8w+

社区成员

ASP即Active Server Pages,是Microsoft公司开发的服务器端脚本环境。
申请成为版主
社区公告
暂无公告