当用户请求编辑 CMS 中的条目时,我们会“锁定”它,以便其他人无法同时编辑它,当他们提交更改时,我们会释放锁定。然而,我们需要处理用户通过其他链接离开页面的情况......我的第一次尝试是使用 jQuery 来触发同步$.ajax()
呼吁$(window).unload
。这确实有效,但是在用户看到的下一页上,该条目似乎被锁定(假设他们返回到列出所有条目的页面,可能是通过后退按钮)。对该页面进行简单刷新即可显示该条目已准备好再次编辑。
我的猜测是,无论出于何种原因,浏览器都会在 ajax 请求完全处理之前获取下一页。问题是是否有办法确保事情按正确的顺序发生。
var fire_unload_ajax = true; // certain things set this to false, not relevant
$(window).unload(function() {
if(fire_unload_ajax && $("#reset-entry-lock form").length == 1) {
$.ajax({
url: window.location.href,
async: false,
cache: false,
type: "POST",
data: $("#reset-entry-lock form").serialize()
});
}
});
我在最近编写的应用程序中解决了类似的问题。
我最终在加载事件中得到了代码every我的应用程序中的页面检查用户是否仍然有锁,如果不再需要则释放它们。我还有像您这样的代码,可以在卸载事件上释放锁定,以防用户导航到我的应用程序之外的页面。
对于 Opera 用户(等),我原本打算让锁每分钟左右自动过期,并每 30 秒从我的应用程序执行一次异步回发以更新锁。这样,即使未触发卸载事件,导航到其他地方的用户也会释放锁定。不幸的是,我的项目在实施之前就被取消了。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)