ASP.NET中的定时问题
我正在开发一个asp.net项目,在这个项目中我使用了倒计时。我用jquery编写了倒计时程序。它工作得很好。另一方面,当我单击项目中的另一个页面时,打开倒计时页面。我的倒计时计时器不应该重新启动。它必须继续正确地倒计时。我想我是用session完成的,但是session有点慢。而且它不适合实时性。我如何处理这个问题?ASP.NET中的定时问题,.net,asp.net,jquery,.net,Asp.net,Jquery,我正在开发一个asp.net项目,在这个项目中我使用了倒计时。我用jquery编写了倒计时程序。它工作得很好。另一方面,当我单击项目中的另一个页面时,打开倒计时页面。我的倒计时计时器不应该重新启动。它必须继续正确地倒计时。我想我是用session完成的,但是session有点慢。而且它不适合实时性。我如何处理这个问题? var Timer; var TotalSec; function CreateTimer(TimerID, Time) { Timer = "#" + TimerID
var Timer;
var TotalSec;
function CreateTimer(TimerID, Time) {
Timer = "#" + TimerID;
TotalSec = Time;
// $("mytimer").show("normal", UpdateTimer(TotalSec));
UpdateTimer(TotalSec)
window.setTimeout("Tick()", 1000);
}
function Tick() {
//var toto = Totalsec;
if (TotalSec <= 0) {
alert("Time is up")
jQuery('#btnSet').removeAttr("disabled");
// jQuery('#link').removeAttr("Enabled");
return;
}
TotalSec -= 1;
UpdateTimer()
window.setTimeout("Tick()", 1000);
}
function UpdateTimer() {
var Seconds = TotalSec;
var Days = Math.floor(Seconds / 86400);
Seconds -= Days * 86400;
var Hours = Math.floor(Seconds / 3600);
Seconds -= Hours * (3600);
var Minutes = Math.floor(Seconds / 60);
Seconds -= Minutes * (60);
var TimeStr = ((Days > 0) ? Days + " gün " : "") + LeadingZero(Hours) + ":" + LeadingZero(Minutes) + ":" + LeadingZero(Seconds)
// jQuery("" + Timer + "").text(TimeStr);
jQuery("#lbldene").text(TimeStr);
}
function LeadingZero(Time) {
return (Time < 10) ? "0" + Time : +Time;
}
$(document).ready(function() {
$.ajax({
type: "POST",
url: "GenericWCF.svc/Timer",
data: "{}",
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function(msg){
CreateTimer('lbldene',msg.d);
}
});
});
var定时器;
var TotalSec;
函数CreateTimer(TimerID,Time){
Timer=“#”+TimerID;
TotalSec=时间;
//$(“mytimer”).show(“正常”,UpdateTimer(TotalSec));
更新程序(TotalSec)
setTimeout(“Tick()”,1000);
}
函数Tick(){
//var toto=总秒;
如果(总秒0)?天+“gün”:“”)+领先零(小时)+“:”+领先零(分钟)+“:“+领先零(秒)
//jQuery(“+Timer+”).text(TimeStr);
jQuery(“#lbldene”).text(TimeStr);
}
函数引导零(时间){
返回(时间<10)-“0”+时间:+时间;
}
$(文档).ready(函数(){
$.ajax({
类型:“POST”,
url:“GenericWCF.svc/Timer”,
数据:“{}”,
contentType:“应用程序/json;字符集=utf-8”,
数据类型:“json”,
成功:功能(msg){
CreateTimer('lbldene',msg.d);
}
});
});
我使用了WCF服务来获取剩余时间,因此页面加载计时器开始倒计时。但当单击应用程序中的新页面并返回计时器页面时。我的计时器重置了,我不想要它。我想继续倒计时您可以将剩余时间存储在cookie中 看 这将是一个简单的方法,因为一切都保持在客户端。然而,如果您需要一些更安全的东西,您可以在服务器端跟踪它
// public property on countdown page
public DateTime Countdown
{
get
{
if (Session["Countdown"] == null)
Session["Countdown"] = DateTime.Now;
return Session["Countdown"];
}
}
其想法是,用户第一次访问页面时,将使用当前日期和时间创建一个会话变量“倒计时”,随后对页面的访问将检索最初访问页面的日期和时间。您可以在页面上将其呈现为javascript变量,以便计时器可以确定还剩多长时间,并从那里开始倒计时
如果某个时间跨度已过,您还需要向该getter添加一些逻辑来重置会话变量。也许您可以提供一些示例代码作为讨论的基础?这是一个固定时间点的倒计时还是一个“此页面将在十秒钟内自毁”类型的倒计时?