Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/37.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
ASP.NET中的定时问题_.net_Asp.net_Jquery - Fatal编程技术网

ASP.NET中的定时问题

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

我正在开发一个asp.net项目,在这个项目中我使用了倒计时。我用jquery编写了倒计时程序。它工作得很好。另一方面,当我单击项目中的另一个页面时,打开倒计时页面。我的倒计时计时器不应该重新启动。它必须继续正确地倒计时。我想我是用session完成的,但是session有点慢。而且它不适合实时性。我如何处理这个问题?

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添加一些逻辑来重置会话变量。

也许您可以提供一些示例代码作为讨论的基础?这是一个固定时间点的倒计时还是一个“此页面将在十秒钟内自毁”类型的倒计时?