php - Jquery Countdown Timer 在页面刷新时没有重置?

标签 php jquery html mysql pdo

我有一段代码可以完美运行。按下按钮时,计时器会倒计时,直到可以再次按下为止。

问题:当页面刷新时,它将被重置,他们将不得不在再次倒计时之前再次点击它。

目标:计时器在他们离开的任何时间重新开始。

我的应用程序是 PHPMySQL(如果这样最好的话),但这是我正在使用的代码。

有谁知道我如何获得我正在寻找的功能?

JS

$('.trigger').on('click', function(e) {
    $(this).html('show')
    $('.show').slideUp('medium');
    var count = 10,
        counter = setInterval(timer, 1000);

    function timer() {
        count--;
        if (count <= 0) {
            clearInterval(counter);
            $('.trigger').html('hide');
            $('.show').slideDown('medium');
            return;
        }
        console.log(count);
        $('.timer').html(count);
    }
});

最佳答案

要实现您的目标,有两种方法:

Cookie 或 DataStorage:如果您可以信任您的客户,则此方法很好。

Cookies

JavaScript Storage

StackOverflow Example

数据库存储:您可以对后端进行 ajax 调用并存储用户点击。这种方法的问题是你必须每秒钟重新发送到数据库。

jQuery.ajax

你看到你所看到的原因:

流程如下所示:

Server Side code -> sends data to client -> browser begins rendering and executing JS

您已完成最后一步,因为网络是无状态的,因此您无需将信息存储在 JavaScript 客户端前端。您必须执行上述操作之一才能解决此问题。

使用下面的上述信息是为您量身定制的示例:

演示: jsFiddle

JS

function createCookie(name, value, days) {
    if (days) {
        var date = new Date();
        date.setTime(date.getTime() + (days * 24 * 60 * 60 * 1000));
        var expires = "; expires=" + date.toGMTString();
    } else var expires = "";
    document.cookie = name + "=" + value + expires + "; path=/";
}

function readCookie(name) {
    var nameEQ = name + "=";
    var ca = document.cookie.split(';');
    for (var i = 0; i < ca.length; i++) {
        var c = ca[i];
        while (c.charAt(0) == ' ') c = c.substring(1, c.length);
        if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length, c.length);
    }
    return null;
}

function eraseCookie(name) {
    createCookie(name, "", -1);
}

$('.trigger').on('click', function (e) {
    $(this).html('show')
    $('.show').slideUp('medium');
    var count = 10;
    if (readCookie("timer") != undefined) count = readCookie("timer");

    var counter = setInterval(timer, 1000);

    function timer() {
        createCookie("timer", count, 365);
        count--;
        if (count <= 0) {
            clearInterval(counter);
            $('.trigger').html('hide');
            $('.show').slideDown('medium');
            eraseCookie("timer");
            return;
        }
        console.log(count);
        console.log(readCookie("timer"));
        $('.timer').html(count);
    }
});

关于php - Jquery Countdown Timer 在页面刷新时没有重置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17635330/

相关文章:

php - PDOStatement 执行不使用 Mysql-ODBC 填充值

Windows 上的 PHP : How to use web services with the logged on user's identity?

javascript - 使用 setInterval 的多个实例

html - 我怎样才能更好地使用带有图像/边框的网格代码?

css - IE 7 DIV 右移

PHP Mongo 查询不为空

javascript - 如果外部加载元素,jQuery 将无法工作

jquery - 在某些情况下 overflow hidden

jquery - 每个使用jquery的多个轮播(carouFredSel),链接标识符问题

javascript - 尽管位于 HTML 源代码中,DOM 中的某些对象似乎并未呈现?