ajax实现用户在线离线

最近设计一个VB.NET的项目,应用了AjaxPro2,觉得确实不错,很多妙用在其中,下面就记录一个用Ajax来处理用户在线离线的问题,没有Ajax的时候都是写到Session_End里面,用Ajax也很容易实现,在这里假设你的Ajax已经配置好,如果没有AjaxPro的支持,你就要考虑项目是否要用Ajax了,因为它会增加项目大量的脚本。

首先你要有一个用户表,表里面设计一个字段ONLINEKBN(在线区分),默认1为在线,0为离线。

帧结构主窗口关闭前事件,此事件点击浏览器关闭的时候触发。

< script type = " text/javascript " >
 
function  window.onbeforeunload()
 
{
     
var strUserId = document.getElementById("hidUserId").value;
     CO2Reduction.Index.Ajax_UpdKbn(strUserId);
}
;
</ script >
//隐藏控件
<input id = "hidUserId" runat="server" type="text" value=""/>

Login.aspx登陆的时候,更新用户的状态为在线状态(1)。


< AjaxPro.AjaxMethod() >  _
        
Public   Function CheckUserInfo(ByVal strUserID As String, _
                            
ByVal strPassWord As StringAs String
......................
......................
                    
//Check成功后,更新表里的在线区分
                    strUpdSql.Append(
" UPDATE 用户表 SET   ")
                    strUpdSql.Append(
"     ONLINEKBN = '1'       ")
                    strUpdSql.Append(
" WHERE       ")
                    strUpdSql.Append(
"     USERID= ")
                    strUpdSql.Append(
" '" + strUserID + "'")
                    strUpdSql.Append(
" AND         ")
                    strUpdSql.Append(
"     KBN='0'")
......................
......................
                    
Return ""
        
End Function

因为Login.aspx是作为主窗口的一个帧画面的,所以用Ajax验证用户后在Login.js里的回调函数里给主窗口的隐藏控件设置用户登陆番号。

window.parent.document.getElementById('hidUserId').value=document.getElementById('txtUserID').value;

主窗口关闭触发事件Ajax调用后台函数,利用参数(用户),更新用户表里面的在线区分(0)。

< AjaxPro.AjaxMethod() >  _
        
Public   Function Ajax_UpdKbn(ByVal strUserId As StringAs Boolean
                
//连接我就不写在这里了
                
Dim strUpdSql As New StringBuilder

                strUpdSql.Append(
" UPDATE 用户表 SET   ")
                strUpdSql.Append(
"     ONLINEKBN = '0'       ")
                strUpdSql.Append(
" WHERE       ")
                strUpdSql.Append(
"     USERID= ")
                strUpdSql.Append(
" '" & strUserId & "'")
                strUpdSql.Append(
" AND         ")
                strUpdSql.Append(
"     KBN='0'")

            
Return True
        
End Function
可以了,关闭窗体,状态就变回来了,不用写到Session_End里面了。

  

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值