官方首页 | 无图版 | BBS首页
PJBlog2最新版本下载|升级包(2007.12.23) Bo-Blog V2.1.0 到 PJBlog 2.7 的转换程序 WP 2.3 到 PJ 2.6/2.7 的转换程序 手把手教您在PJForum上传图片
PJBlog技术支持论坛使用问题总索引 手术式讲解视频教程如何制作 PJblog2.7.05终极资源包电驴免费下载 风格使用区-HOT! 凤凰行动开始!
发新话题
打印

AJAX登录[已重新修改,实现无刷新登陆!!!!]

本主题由 thomas 于 2007-4-9 16:22 解除高亮

AJAX登录[已重新修改,实现无刷新登陆!!!!]

已经重新修改代码,实现无刷新登陆,具体方法我已经写在我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 编辑 ]

TOP

大家测试一下,同时谢谢楼主的奉献精神
我的博客小站Tom's Blog

TOP

前些日子已经有人成功写出来过,我测试过也能成功,似乎没有你这个简单
考试。。考试

TOP

主要是不知道具体登录的流程,第一次写的时候是按照局部刷新的思路写的,但写出来后,老是要连续登录两下才能局部刷新成功,也有可能是我的思路不对,我把代码贴出来,大家讨论下。。。。

TOP

支持一下~
异次元の世界 http://www.x-force.cn

TOP

测试了   成功 暂时没发现问题

TOP

^_^,帮自己顶一个!

TOP

我迷茫中~~~~~~希望我也成功!

TOP

不错

TOP

发新话题