Когда пользователь запрашивает редактирование записи в нашей 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()
});
}
});