下一站天后

今朝的容颜老于昨晚

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

     管理员不一定是点击“退出”来退出后台管理界面的,大多数情况下是关闭浏览器,甚至死机关闭进程,断电。那么我们如何知道管理员有没有退出呢?这里主要考虑“关闭浏览器”的情况,但用以下的方法将所有情况统统包括在内,也属于编程技巧吧!记录下来,主要让自己回顾思路,熟悉ajax的使用。注意使用ajax的页面一定要<form name="Form1" runat="server">,由于我这里用了一个框架页面,没有runat="server",找了半天页面里也没有注册ajax。

     每3秒异步的更新管理员的退出时间(当前时间),如果管理员不在了,则不会更新了,这样误差也不超过3秒,还是可以记录下来的。

 

这里注意:在pageload里注册类Ajax.Utility.RegisterTypeForAjax(typeof(_Default)); 

在_Default类里注册前台回调方法:[Ajax.AjaxMethod()]//ajax 注册类里的方法

public class _Default: Components.Module.QsqManagePager
    {
        
private void Page_Load(object sender, System.EventArgs e)
        {
            Ajax.Utility.RegisterTypeForAjax(
typeof(_Default));            
        }    
        
//更新退出时间
        [Ajax.AjaxMethod()]
        
public void UpdateOutTime()
        {
            DataProvider dp
=DataProvider.InstanceData();
            User u 
= Components.Context.GetUser();
            
if(u !=null && u.Id>0)
            {
                QsqAdminLog log 
= new QsqAdminLog();
                log.UserId
=u.Id;
                log.LoginOutTime
=DateTime.Now;                            
                log.Update();    
            }            
        }
}

 

 

前台调用这个方法,function call(response){},这里的回调函数指明是异步的,由于这里没有返回值,所以调用一个空的回调函数。 setInterval(reFreshOutTime,3000);每3秒调用一次

<script language="javascript"> 
function reFreshOutTime()
{
     _Default.UpdateOutTime(call);
}
function call(response)
{
    
}
window.onload
=function()
{
    reFreshOutTime();
    setInterval(reFreshOutTime,
3000);
}
</script>  

(这种ajax.dll这个组件独有的)
直接.value就是同步,执行一个回调函数即为异步。如果异步使用.value会报错,没有回调函数则被当作同
步的。这和局部全部没有关系,ajax都是局部更新。在后台调用服务器端方法,但如果是同步 就会等着,异步就不用等。服务器返回了结果

就会通知回调函数去处理,显然异步要比同步好。

 

下面为一个同步的调用,验证论坛帖子标题是否已存在

 

        <script language="javascript">
            function validate(o)
            {
                var result 
= ForumAdd.ValiedateTitle(o.value).value;//验证方法返回值
                obj=document.getElementById("btnPub");        
                
if(result)
                {                     
                    
//当方法返回为真,则隐藏添加按钮,并提示帖子存在
                    alert("该帖子已发表");    
                    obj.style.display
="none";                    
                }
                
else
                {
                    
//显示按钮
                    obj.style.display='';
                }
            }
        
</script>

 

<td width="87%" bgColor="#fff9ea"><input id="txtTitle"  onblur="validate(this);" type="text" size="70" name="TextBox" runat="server"></td>

 

 

posted on 2008-09-01 17:40  孙雅玲  阅读(447)  评论(0编辑  收藏  举报