计算在$ .get()中使用的传递时间变量

时间:2012-07-09 17:55:14

标签: php javascript jquery ajax

我正在尝试使用一些信息更新我的数据库。其中一个关键信息是自页面首次加载以及用户单击按钮后经过了多长时间。我的代码如下所示:

<script>
function pauseVideo() {
    $.get("video_pause.php?pause=" + timePassed + "&videoid=<?php echo $_GET['sessionid']; ?>&sessionid=<?php echo $_GET['videoid']; ?>");
}
</script>

<html>
<div id="pause" onclick="pauseVideo()">PAUSE</div>
</html>

我的PHP很好,所以忽略它。我遇到麻烦的部分是'timePassed'。我需要这个是自首次加载页面以及用户单击PAUSE div以来的秒数。

我想我需要在点击时运行一个函数来查找传递的时间,然后以某种方式在$ .get()中使用该时间变量?

4 个答案:

答案 0 :(得分:1)

加载文档时,只需将当前时间保存在变量中:

$(document).ready(function() {
    var timeWhenLoaded = (new Date).getTime() / 1000;
});

然后,当单击暂停按钮时,计算已经过的时间:

function pauseVideo() {
    var currTime = (new Date).getTime() / 1000;
    // time in seconds
    var timePassed = Math.floor(currTime - timeWhenLoaded);
    $.get("video_pause.php?pause=" + timePassed + "&videoid=<?php echo $_GET['sessionid'];     ?>&sessionid=<?php echo $_GET['videoid']; ?>");
}

答案 1 :(得分:1)

删除HTML中的onclick,删除现有功能,然后将其放在页面的head部分:

(function(){
    var loadTime = (new Date).getTime(); // Page started loading

    $(function(){
        // DOM fully loaded, so move the assignment here if that is what
        // you want to consider as the load time

        $('#pause').click(function(){
            $.get("video_pause.php?pause=" + Math.floor(((new Date).getTime() - loadTime)/1000) + "&videoid=<?php echo $_GET['sessionid']; ?>&sessionid=<?php echo $_GET['videoid']; ?>");
        });
    });

})();

另请注意,您永远不能相信服务器端的变量。任何人都可以输入负数,甚至可以输入“披萨”这个词,如果他们真的想要的话。

答案 2 :(得分:0)

类似的东西:

var startTime = (new Date).getTime() / 1000;
function pauseVideo() {
    var curTime = (new Date).getTime() / 1000;
    var timePassed = Math.floor(curTime - startTime);
    $.get("video_pause.php?pause=" + timePassed + "&videoid=<?php echo $_GET['sessionid']; ?>&sessionid=<?php echo $_GET['videoid']; ?>");
}

答案 3 :(得分:-1)

如果在服务器端生成包含以下代码的页面,您可以将当前时间传递给脚本,如:

<html>
  <div id="pause" onclick="pauseVideo('" + curTime +"')">PAUSE</div>
</html>

(需要echo语法)

或将其放入隐藏字段并将其传递回服务器。 (并在php中进行计算) 这样,您就可以获得自请求页面以来的时间......