【问题标题】:Maintaining a Javascript variable between HTML pages to send to database?在 HTML 页面之间维护一个 Javascript 变量以发送到数据库?
【发布时间】:2013-01-31 20:26:31
【问题描述】:

我正在为大学做一个实验,该实验涉及计算参与者阅读一个简单网页所需的时间。由于实验的性质,我不能在他们访问页面之前告诉他们我正在计时,所以在下一页我需要告诉他们他们正在计时,然后提供一个选项,如果他们选择退出反对使用 Python CGI 脚本将他们的数据传递到数据库。

在第一页的顶部我有这个:

<script type="text/javascript" src="timing.js">
</script>

在底部我有一个链接可以将它们带到下一页,还可以停止计时器:

Click here when you are ready to proceed.
<button onclick="window.location = 'timer2.html'; stopTime()">Click Here</button>

...在 .js 文件中,我有以下内容:

var sec = 0;

function takeTime()
{
    setInterval(function(){sec += 1},1000);
}

myTime = takeTime();

function stopTime()
{
clearInterval(myTime);
}

function showTime()
{
alert("Time is " + sec + " seconds.");
}

当我单击链接转到第二页时,“sec”变量只是重置为 0。如果我从 .js 文件中取出声明并将其放在一个单独的脚本标记中,然后再引用.js 文件在第一个 HTML 页面中,第二个 HTML 页面根本不识别变量“sec”。如何存储时间以便我可以将其发送到数据库或从第二个 HTML 页面中删除它?

【问题讨论】:

  • 为什么不使用cookie?见:http://www.w3schools.com/js/js_cookies.asp
  • @letiagoalves 虽然 cookie 可能是一个很好的解决方案,但请不要链接到 W3Schools,他们的信息几乎总是过时且经常不准确。

标签: javascript python html persistence cgi


【解决方案1】:

一种方法是使用查询字符串。

<button onclick="window.location = 'timer2.html?time=' + sec">Click Here</button>

如果需要 252 秒,它们将被发送到例如timer2.html?time=252。然后在 timer2.html 上使用How can I get query string values in JavaScript? 获取这个值。

【讨论】:

    【解决方案2】:

    Javascript 变量不会从一个页面加载到下一个页面保持其状态,因此您需要另一种方式来存储该信息。除了通过查询字符串传递它之外,另一种方法是 HTML5 本地存储。使用本地存储,您可以将值存储在同一域内的浏览器中,这些值可从一个页面加载到下一个页面进行检索。

    例如,您的第一页:

    var sec = 0;
    localStorage.time = 0;
    
    function takeTime()
    {
        setInterval(function(){sec += 1},1000);
    }
    
    myTime = takeTime();
    
    function stopTime()
    {
        clearInterval(myTime);
        localStorage.time = sec;
    }
    
    function showTime()
    {
    alert("Time is " + sec + " seconds.");
    }
    

    在timer2.html中的某处:

    var sec = localStorage.time;
    

    【讨论】:

    • 尝试了本地存储选项,但它一直说时间是“01 秒”!不过,使用查询字符串似乎可行。谢谢! :-)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-15
    相关资源
    最近更新 更多