如何在用户离开页面时发送ajax请求

时间:2016-12-08 23:53:07

标签: javascript jquery html ajax

用户可以删除自己的发布,因此隐藏发布并将删除帖子的ajax请求发送到服务器。但是我希望能够恢复帖子直到用户在该页面上,所以只有当用户关闭页面时才必须发送ajax请求?是否可以实现这样的事情,或者唯一的方法是在JS中复制和存储该出版物,以便在必要时进行恢复?

1 个答案:

答案 0 :(得分:1)

执行此操作的理想和最常见的方法是在posts表中设置“已删除”标志,而不是实际删除它。这就是Facebook,StackOverflow和其他许多人的做法。实际上没有任何东西被删除了。

也就是说,如果您仍然希望以自己的方式执行此操作,则可以发送不等待响应的ajax请求。

$(window).unload(function(){
    $.ajax({url: "myurl.php"});
});

在后端,您可以在收到连接后立即关闭连接并继续处理。如果你正在使用PHP,你可以这样做:

<?php
// Close connection
header("Connection: close");
ob_start();
echo "Closed";
header("Content-Length: ".ob_get_length());
ob_end_flush();
flush();

// connection is closed, upload stuff to db or whatever...

这不可靠或理想,并且要实现任何类型的“取消删除”功能,在数据库中设置标记是正确的,只有可靠的方法才能执行此操作。