如果有人想编辑表中的条目,我会将列"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请求续订锁定。