Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/464.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Windows.beforeunload中ajax请求的替代方法,用于释放悲观锁_Javascript_Ajax_Onbeforeunload_Pessimistic Locking - Fatal编程技术网

Javascript Windows.beforeunload中ajax请求的替代方法,用于释放悲观锁

Javascript Windows.beforeunload中ajax请求的替代方法,用于释放悲观锁,javascript,ajax,onbeforeunload,pessimistic-locking,Javascript,Ajax,Onbeforeunload,Pessimistic Locking,我有一个处理多用户锁定的web应用程序——当打开记录进行编辑时,会设置服务器端锁定。在提交表单时,或通过窗口中的ajax请求释放锁。在卸载之前,当用户返回或关闭选项卡等时,锁将被释放(如果用户从未关闭或提交锁,锁最终会超时,然后变得乐观) Chrome80似乎已经阻止了在卸载之前发送AJAX请求的功能。有没有其他方法可以做到这一点?如果没有,我猜我需要进行定时ajax ping以保持锁定-我只是不确定是否有针对这种情况的最佳实践。@Teemu:这是“官方”解决方案。但它也有一些缺点。。。最重要的

我有一个处理多用户锁定的web应用程序——当打开记录进行编辑时,会设置服务器端锁定。在提交表单时,或通过
窗口中的ajax请求释放锁。在卸载之前,当用户返回或关闭选项卡等时,锁将被释放(如果用户从未关闭或提交锁,锁最终会超时,然后变得乐观)


Chrome80似乎已经阻止了在卸载之前发送AJAX请求的功能。有没有其他方法可以做到这一点?如果没有,我猜我需要进行定时ajax ping以保持锁定-我只是不确定是否有针对这种情况的最佳实践。

@Teemu:这是“官方”解决方案。但它也有一些缺点。。。最重要的一点是,该方法异步发送数据。在我的例子中(这与@Matthew的提问非常相似),锁定的记录在锁定时间内被标记为“锁定图标”。因此,在关闭“编辑器窗口”后,将发送一个请求,以检查是否已解锁以更新图标。这可能适用于sendBeacon,但取决于异步方法。有更好的解决办法吗?ps:另一个小缺点是sendBeacon不受IE@vso在卸载之前从
发送异步请求从来都不可靠。如果响应足够快,则表示已完成此操作;如果响应不够快,则在卸载页面时请求已中止。sendBeacon发送的请求保证发送到服务器,并且在最终页面关闭时不会中止,但您无法在客户端接收服务器响应。要释放锁,SendBack应该是一个理想的解决方案。是的,IE不支持它。在IE中,您可以使用同步AJAX请求,IE中始终支持它,因为它不再更新了。@Teemu:这是“官方”解决方案。但它也有一些缺点。。。最重要的一点是,该方法异步发送数据。在我的例子中(这与@Matthew的提问非常相似),锁定的记录在锁定时间内被标记为“锁定图标”。因此,在关闭“编辑器窗口”后,将发送一个请求,以检查是否已解锁以更新图标。这可能适用于sendBeacon,但取决于异步方法。有更好的解决办法吗?ps:另一个小缺点是sendBeacon不受IE@vso在卸载之前从
发送异步请求从来都不可靠。如果响应足够快,则表示已完成此操作;如果响应不够快,则在卸载页面时请求已中止。sendBeacon发送的请求保证发送到服务器,并且在最终页面关闭时不会中止,但您无法在客户端接收服务器响应。要释放锁,SendBack应该是一个理想的解决方案。是的,IE不支持它。在IE中,您可以使用同步AJAX请求,它在IE中始终受支持,因为它不再更新。