如果浏览器关闭,则解锁表


Unlock table if browser is closed

如果有人想编辑表中的条目,我会将列"Locked"设置为true。如果用户关闭了浏览器/选项卡,我如何才能做到最好,使值由"锁定"写回false?

ajax有可能做到这一点吗?这可以在用户关闭浏览器/选项卡时看到,然后ajax事件被触发?

或者有更好、更可靠的方法吗?我使用laravel 4和MSSQL。

这是非常危险且非常不可靠的,因此如果您需要解锁这些行,最好也对它们设置超时(locked_at列),对列进行索引并搜索锁定的行以解锁超时的行。但是

你可以挂接浏览器卸载javascript事件来帮助你:

window.onbeforeunload = function(event) {
    var s;
    event = event || window.event;
    if (requestsPending > 0) {
        s = "Your most recent changes are still being saved. " +
            "If you close the window now, they may not be saved.";
        event.returnValue = s;
        return s;
    }
}

可靠地做到这一点很巧妙,有两种方法:

按照Antonio的建议,使用onbeforeunload,您可以执行ajax请求来释放锁吗?

在编辑时锁定记录x分钟,然后在锁定到期前通过轮询ajax请求续订锁定。