如何在刷新或关闭时将js中的数据发送到服务器?

时间:2011-07-28 13:19:39

标签: javascript html

我有一个基本上是倒数计时器的网页。从服务器接收定时器的初始值。我想要做的是在页面关闭或刷新时保存计时器的剩余值。如果没有定期同步定时器的值,有没有办法做到这一点?

3 个答案:

答案 0 :(得分:1)

试试window.onbeforeunload。它在浏览器更改页面之前调用(通过关闭或导航),您可以使用它来发回数据,如:

window.onbeforeunload = sendTimeToServer;
function sendTimeToServer() {
    // some ajax code
}

答案 1 :(得分:1)

在页面的aspx文件中,将以下内容添加到Body选项卡:

<body onUnload="someMethod()"/>

然后在这个方法中:

<script language="JavaScript"> 
    function someMethod() 
    {   
        var value = ""; //You need to set the timer value here
        document.cookie = "timercookie" + "=" + escape(value) + "; path=/" + "; expires=Thu, 2 Aug 2001 20:47:11 UTC"; 
    } 
</script>

您需要将值存储在cookie中,然后在加载页面时检索它。

答案 2 :(得分:0)

哦,简短的回答是 - 这是不可能的。

时间越长 - 我们可以发送ajax请求(或iframe或其他),但不能保证它不会被浏览器中止(实际上,很可能会)。

更长一点的答案是 - 我们可以尝试在onbeforeunload事件上发送同步XMLHttpRequest(有人称这样的请求同步ajax - 这很有趣,因为首先代表“异步”) - 但是同步ajax调用很头疼。如果你有选择不使用它们 - 你最好不要。

我建议您在localStorage中存储特定数据,并尝试在用户下次访问该页面时将其发送到服务器。