Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/439.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Ruby rails-使用ajax调用疑难解答window.onunload_Javascript_Jquery_Ruby On Rails_Ajax_Ruby On Rails 3 - Fatal编程技术网

Javascript Ruby rails-使用ajax调用疑难解答window.onunload

Javascript Ruby rails-使用ajax调用疑难解答window.onunload,javascript,jquery,ruby-on-rails,ajax,ruby-on-rails-3,Javascript,Jquery,Ruby On Rails,Ajax,Ruby On Rails 3,我试图通过一个AJAX调用跟踪页面浏览时间,该调用通过window.onunload事件发布。这是我的代码(我通过用户按下的按钮手动完成的AJAX调用,请参阅,但现在我希望它“在引擎盖下”运行,而不需要用户执行任何操作)。加载工作正常(我收到了警报),但卸载不起作用(当我关闭窗口时没有警报——或者我甚至不应该期望如此?),不管怎样,数据都没有被发布到我的数据库中。也许这又是一次我不得不学习JS的时候了 次要更新(检查函数是否正在启动,然后在onload事件之外声明变量,以便在第二个函数中访问):

我试图通过一个AJAX调用跟踪页面浏览时间,该调用通过
window.onunload
事件发布。这是我的代码(我通过用户按下的按钮手动完成的AJAX调用,请参阅,但现在我希望它“在引擎盖下”运行,而不需要用户执行任何操作)。加载工作正常(我收到了警报),但卸载不起作用(当我关闭窗口时没有警报——或者我甚至不应该期望如此?),不管怎样,数据都没有被发布到我的数据库中。也许这又是一次我不得不学习JS的时候了

次要更新(检查函数是否正在启动,然后在onload事件之外声明变量,以便在第二个函数中访问):

在我关心的页面视图的
中:

<script type="text/javascript">
    window.onload = function () {
        var d = new Date();
        alert("load works" + d);
    }

    var d = new Date();
    var starttime = d.getTime();

    window.onbeforeunload = function () {
        var j = new Date();
        var endtime = j.getTime();
        alert("unload works START:" + d + starttime + "END:" + j + endtime);
        $.ajax({
            type: 'POST',
            url: '/pagetimes/create',
            data: $.param({
                pagetime: {
                    pagename: 'whatever',
                    start: starttime,
                    end: endtime
                }
            })
        });
    }
</script>

window.onload=函数(){
var d=新日期();
警报(“负载工作”+d);
}
var d=新日期();
var starttime=d.getTime();
window.onbeforeunload=函数(){
var j=新日期();
var endtime=j.getTime();
警报(“卸载工作开始:+d+开始时间+”结束:+j+结束时间);
$.ajax({
键入:“POST”,
url:“/pagetimes/create”,
数据:$.param({
页面时间:{
pagename:'随便什么',
开始:开始时间,
结束:结束时间
}
})
});
}

我的数据库中没有任何结果(帖子没有通过?

在第一个函数之外声明starttime变量并检查。看起来它在chrome中不受支持,并且在body标签上。您不能使用onunload事件来完成此操作,甚至不能使用onbeforeunload事件。没有跨浏览器的方式来执行您试图记录的操作,您可以尝试
$(window).unload(function(){
而不是
window.onunload=function())
在第一个函数之外声明starttime不会改变任何事情。@awolff,我不能做哪部分?有可能的解决方法吗?@arun,没有修复。我现在正在使用window.onbeforeuload函数,以便至少可以看到警报通过。现在的问题是AJAX调用,但我对它了解不够他的跨浏览器问题——如果有人提到我的问题,就会被读出来。