大家使用过ms n的人对m sn的当某个人登陆时会出现个弹出框应该非常深刻。它可以提示你得某个人上线了
。
那么可不可以在asp的页面上使用这种弹出框,而且是使用ajax。大部分的web都会有个数据库的表来存放用户信息。那么你可以使用用户登录时的请求信息来完成这个类似于ms n的功能。
这这篇文章中我将会使用到微软的ajax。如果你是s2008就不用安装这个,本身就带着。
我们会使用一个MyIndex的表来模拟的你收件箱,这张表包括emailfrom,body和date三列。
首先我们需要创建一个添加了ajax接口的website,然后打开default.aspx页面的html资源,然后开始添加我们自己隐藏和显示弹出框的ajax代码。实现我们定义一个变量:
这个变量用来保存当前数据库那个MyIndex表中的记录数。每当页面被Load的时候它就会记录下来当前表中的记录数目。然后我们在后台代码的Init方法中添加一个event handler。代码如下:
当我们第一次加载这个页面时程序会运行一个script service来执行GetLatestNumberOFEmails方法。这个service的方法在后面会说到。当第一次加载页面的时候我们得到当前的数据库MyIndex表中的记录数目,而且存在numberOfEmails_original中。这个方法的实现如下代码所示:
很明显他是执行了一个callback的方法OnCurrentNumberOfEmailReady。那么这个StartChecking()是干嘛的。呵呵,别急。它是个调用webservice的方法,而方法的代码如下:
可以看到这个startchecking方法也是调用相同的那个ajax service方法。不过他是传给服务器一个叫做OnLatestNumberOfEmailsReady的callback方法。这个javascript实现如下:
这个很好理解吧,每一分钟去check一下。这段代码区判断是否当前那个表记录比刚加载页面时的记录多,如果多的话就显示出来javascript的弹出框,注意它显示的位置。然后再把这个新的记录复制给你的那个numberOfEmails_original变量。依次循环。
上图就是页面显示。下面再附上那个scriptservice的web 方法。
我不知道怎么上传源 代码。如果谁需要可以告诉我。