Когда пользователь покидает текущую страницу конфигурации / композиции, я хотел бы отправить запрос на публикацию в свой бэкэнд (Django).
Для этого я использую window.onbeforeunload и window.onunload.
Ниже приведен следующий код (с использованием vue.js):
updated: function () {
var csrftoken = document.querySelector('input[name="csrfmiddlewaretoken"]').getAttribute("value");
var items_composed_cart_length = this.items_composed_cart.length;
var next = window.location.href;
var sous_categories_articles = Number(next.slice(-1));
window.onbeforeunload = function (e) {
if (items_composed_cart_length !== 0)
return "Si vous quittez ou rechargez la page, votre composition ne sera pas sauvegardée.";
};
window.onunload = e => {
this.$http.post('http://127.0.0.1:8000/commander/remove-composed-cart/' + sous_categories_articles + '/', { next: next });
$.ajax({
type: 'POST',
async: false,
url: 'http://127.0.0.1:8000/commander/remove-composed-cart/' + sous_categories_articles + '/',
data: { 'csrfmiddlewaretoken': csrftoken, 'next': next },
});
localStorage.removeItem('items_composed_cart');
localStorage.removeItem('groupedByTypologieItem');
};
},
Я хотел бы сделать синхронный запрос.Что было бы лучшим вариантом, поскольку async: false устарела?
Я пытался использовать Navigator.sendBeacon (), но не могу передать бэкэнду токен CSRF (ошибка 403).Я также пробовал vue-resource, но я так и не понял, как создать синхронный почтовый запрос ...
Заранее спасибо за помощь.
Singertwist