php - Javascript 代码未运行 onbeforeunload

标签 php javascript html onbeforeunload

我有 3 个变量来跟踪在网站上花费的时间

 $_SESSION['checkin']; //logged when user first enters the site 
 $_SESSION['loggedAt']; //logged when the user leaves the site
 $_SESSION['timespent']; //time spent in minutes

我想做的是每次用户离开页面时,这些值都会被推送到数据库中。我所做的是使用 onbeforeunload。

下面是我的使用方法:

在每一页上:

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

storeSession.js:

window.onbeforeunload = confirmExit();
  function confirmExit()
  {
        var xhr = new XMLHttpRequest();
        xhr.open('post','../php/storeSession.php',true);
        xhr.send();
        return "Are you sure you want to leave?";
  }

和storeSession.php:

$_SESSION['loggedAt'] = time();
$temptime = (double)$_SESSION['timespent']/60;
$_SESSION['timespent'] = $_SESSION['loggedAt'] - $_SESSION['checkin'];

mysql_select_db($db, $conn) or die(mysql_error()); 

$data = mysql_query("INSERT INTO user (user_id, timespent) VALUES ($tempuser, $temptime) ON DUPLICATE KEY UPDATE timespent = timespent + $temptime")
        or die(mysql_error()); 

$_SESSION['timespent'] = null;
$_SESSION['loggedAt'] = null;
$_SESSION['checkin'] = null;

mysql_close($con);

我找不到问题,一切似乎都正常(没有错误等)。有人知道吗?

最佳答案

一个问题是这一行:

window.onbeforeunload = confirmExit();

您调用了函数并将返回值分配给 window.onbeforeunload,而不是分配给函数本身。

将行更改为:

window.onbeforeunload = confirmExit;

...或使用闭包。

此外,您在不发送任何数据的情况下发出 POST 请求(您没有将任何内容传递给 send() 的第一个参数)- 您可能想要发出 GET 请求。

关于php - Javascript 代码未运行 onbeforeunload,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13932004/

相关文章:

php - 稍后发布帖子

php - 从多个表中选择内容并显示

java - Solr ; "rookie"问题

php - Internet Explorer 8 不为 ajax 请求传递 session cookie

javascript - 使用 JavaScript 隐藏一个类中的所有元素并显示一个指定元素

Javascript Namespacing,语法错误在哪里?

javascript - 通过 JS 函数在选择选项中使用单元格添加行

html - 非常奇怪但非常烦人的 JQuery 移动问题

html - div 占据页面的整个宽度

javascript - 如何在extjs中增加饼图中的名称