如何在页面卸载/离开时发送AJAX请求?

时间:2011-09-30 18:50:44

标签: javascript jquery ajax

window.onbeforeunload = function() {
    return $j.ajax({
        url: "/view/action?&recent_tracking_id=" + $recent_tracking_id + "&time_on_page=" + getSeconds()
    });
}

这就是我所拥有的,但它会返回[object object]

的警报

我该如何执行AJAX?

注意:当我不返回任何内容时,服务器不会显示它正在接收ajax请求。

4 个答案:

答案 0 :(得分:2)

您无需返回任何内容,只需触发ajax调用即可。

window.onbeforeunload = function(e) {
    e.preventDefault();
    $j.ajax({ url: "/view/action?&recent_tracking_id=" + $recent_tracking_id + &time_on_page=" + getSeconds()
    });
}

如果您使用的是jQuery,则可以尝试绑定到.unload()事件。

答案 1 :(得分:1)

onbeforeunload允许您返回一个字符串,该字符串显示在“您要离开”确认中。如果您什么都不返回,页面将正常退出。在您的情况下,返回JQuery ajax方法返回的jqXHR对象。

您应该只执行Ajax调用并且不返回任何内容。

答案 2 :(得分:0)

为什么要将函数引用返回到全局池?它应该是这样的:

window.onbeforeunload = function() {
 $j.ajax({
    url: "/view/action?&recent_tracking_id=" + $recent_tracking_id + "&time_on_page=" + getSeconds()
 });
}

答案 3 :(得分:0)

据我所知,onbeforeunload函数只会返回一个警告。这样做是为了防止几年前令人烦恼的弹出窗口。

我正在建立一个聊天客户端,我想要做的事情的唯一方法是做一个更新时间戳的setInterval函数,然后检查超时用户并删除它们。这样,在某个时间间隔内没有“登记”的用户将被仍然登录的其他用户从会议室中删除。

不漂亮,或理想,但做到了。