已经重新修改代码,实现无刷新登陆,具体方法我已经写在我BLOG里了,懒得在这又贴一遍,也算是给自己做个广告吧!呵呵;
演示地址: http://www.dqhf.net/
如果又什么问题和建议,欢迎大家提出.同时很乐意与大伙交换下友情连接!
成功的回个帖报道下!呵呵,
-------------------------------------
注意:以下代码是以前的,登陆成功后需要刷新整个页面---------------------------------------------------------------------------------------------------------------------------
弄了一天,总算写出了个样子,郁闷的是登录成功后总得把整个页面刷新一下,如果只想局部刷新,非得连续登录两下,不知道是为什么,找了好久也没找到原因,先就这样吧,哪位高手如果看见了,帮我分析下,先谢谢了 。
效果演示:
http://www.dqhf.net/
本代码在IE6.0和FIREFOX下测试完全正常。如果有什么建议和错误请到我 BLOG上提出,最后欢迎大家交换友情链接!
程序代码
<div id="userlogin" style=" width:200px; height:70px;text-align:center; display:none; position: absolute; left:450px; top:200px;">
<form id="frm1" name="checkUser" action="login.asp" method="post">
<div id="MsgContent">
<div id="MsgHead" style="text-align:right">用户登录 <img src="images/x.gif" onclick="javascirpt:document.getElementById('userlogin').style.display='none'" /></div>
<div id="MsgBody">
<input id="action" name="action" type="hidden" value="login"/>
<label>用户名:<input id="username" name="username" type="text" size="18" class="userpass" maxlength="24" value="imagic"/></label><br/>
<label>密 码:<input id="password" name="password" type="password" size="18" class="userpass"/></label><br/>
<label>验证码:<input id="validate" name="validate" type="text" size="4" class="userpass" maxlength="4"/> <%=getcode()%></label><br/>
<label><input name="KeepLogin" type="checkbox" value="1"/>记住我的登录信息</label><br/>
<input type="button" onclick="ok_login()" value="登 陆" class="userbutton"/> <input type="button" value="用户注册" class="userbutton" onclick="location='register.asp'"/>
</div>
</div>
<div id="d1" style="background-color:#44C7D3; color:#FF0000; height:20px; display: none;"></div>
</form>
</div>
程序代码
<script language="javascript">
function user_login()
{
if(document.getElementById("userlogin").style.display == "none")
{
document.getElementById("userlogin").style.display = "block";
}
else
{
document.getElementById("userlogin").style.display = "none";
}
}
var xml_http;
function ok_login(){
var ok_value="";
var tm="";
document.getElementById("d1").innerHTML="";
document.getElementById("d1").style.display="block";
ok_value +=document.getElementById("action").name+"="+document.getElementById("action").value+"&";
ok_value +=document.getElementById("username").name+"="+document.getElementById("username").value+"&";
ok_value +=document.getElementById("password").name+"="+document.getElementById("password").value+"&";
ok_value +=document.getElementById("validate").name+"="+document.getElementById("validate").value;
if(window.ActiveXObject)
{
xml_http=new ActiveXObject("microsoft.XMLHTTP");
}
else if(window.XMLHttpRequest)
{
xml_http=new XMLHttpRequest();
}
xml_http.open("post","login.asp",true);
xml_http.setRequestHeader("CONTENT-TYPE","application/x-www-form-urlencoded");
xml_http.send(ok_value);
xml_http.onreadystatechange=ok_show;
}
function ok_show()
{
if(xml_http.readyState==4)
{
if(xml_http.status==200)
{
if(xml_http.responseText=="True")
{
window.location.reload();
}
else
{
document.getElementById("d1").innerHTML=xml_http.responseText;
}
}
}
else
{
document.getElementById("d1").innerHTML="正在登录...";
}
}
</script>
以上两段代码贴到"footer.asp"页面里,下面的代码要放在
程序代码
ElseIF Request.form("action")="login" then
Dim loginUser
loginUser=login(Request.Form("UserName"),Request.Form("Password"))
这个代码之后【此代码在login.asp页】
代码如下:
程序代码
if loginUser(3) then
response.Clear()
userPanel()
response.Write(loginUser(3))
response.End()
else
response.Clear()
response.Write(loginUser(1))
response.End()
end if
最后一次要修改的是library.asp页面,在用户面板里找到"登录"的位置,然后把他的超链接标签改成
程序代码
<a onclick=""user_login()"" href=""#"" class=""sideA"" accesskey=""L"">登录</a>
所有步骤完成.
----------------------------------------以下是局部刷新登录的代码【注意:此代码需要连续登录两下。】-----------------
首先在后台的模块里找到登录模块,在里面加入一个DIV标签:
<div id="userid">$user_code$</div>
将插入login.asp页面的代码改为
if loginUser(3) then
response.Clear()
userPanel()
response.Write(loginUser(3)&“&”)
response.Write(userPanel)
response.End()
else
response.Clear()
response.Write(loginUser(1))
response.End()
end if
然后再将那段ok_show函数改为
function ok_show()
{
if(xml_http.readyState==4)
{
if(xml_http.status==200)
{
var s=xml_http.responseText;
var ss=s.split("&");
if(ss[0]=="True")
{
document.getElementById("userid").innerHTML=ss[1];
}
else
{
document.getElementById("d1").innerHTML=xml_http.responseText;
}
}
}
不知道为什么要登录两遍才能实现局部刷新,哪位高手指点下迷津。。。。。。
[
本帖最后由 imagic 于 2007-3-28 23:37 编辑 ]