如果有人想要编辑表格中的条目,我会将“已锁定”列设为true。如果用户关闭了浏览器/选项卡,我该如何做到最好,以便将值“锁定”写回假?
用ajax可以吗?当用户关闭浏览器/选项卡,然后激活ajax事件时,可以看到这一点?
还是有更好更可靠的方法吗?我使用laravel 4和MSSQL。
答案 0 :(得分:0)
这非常危险并且非常不可靠,因此如果您需要解锁这些行,最好也对它们施加超时(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;
}
}
答案 1 :(得分:0)
Tricky做得可靠,有两种方法:
使用onbeforeunload就像Antonio建议的那样,你可以做一个ajax请求来释放锁吗?
在编辑时锁定记录x分钟,然后在锁定到期之前通过轮询ajax请求续订锁定。