From c27222c75162ea86e3a7a7b4eb8ac62ed3bb9a70 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Aur=C3=A9lien=20Delobelle?= Date: Wed, 31 Aug 2016 00:54:16 +0200 Subject: [PATCH] =?UTF-8?q?Fix=20requ=C3=AAtes=20AJAX=20simultan=C3=A9es?= =?UTF-8?q?=20K-Psul?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - `lock` limite à 1 le nombre de requêtes AJAX critiques (perform/cancel operations) simultanées afin d'éviter de compter plusieurs la même commande. Ce qui arrivait dans le cas où le panier était fait et en tapant 2 fois enter rapidement (la 2nde requête était lancée avant que la réponse de la 1ère ne revienne) --- kfet/templates/kfet/kpsul.html | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/kfet/templates/kfet/kpsul.html b/kfet/templates/kfet/kpsul.html index ff64e960..bcd260f5 100644 --- a/kfet/templates/kfet/kpsul.html +++ b/kfet/templates/kfet/kpsul.html @@ -116,6 +116,9 @@ $(document).ready(function() { // General // ----- + // Lock to avoid multiple requests + lock = 0; + // Retrieve settings settings = {} @@ -369,6 +372,9 @@ $(document).ready(function() { var operations = $('#operation_formset'); function performOperations(password = '') { + if (lock == 1) + return false; + lock = 1; var data = operationGroup.serialize() + '&' + operations.serialize(); $.ajax({ dataType: "json", @@ -383,6 +389,7 @@ $(document).ready(function() { }) .done(function(data) { coolReset(); + lock = 0; }) .fail(function($xhr) { var data = $xhr.responseJSON; @@ -398,6 +405,7 @@ $(document).ready(function() { } break; } + lock = 0; }); } @@ -414,6 +422,9 @@ $(document).ready(function() { var cancelForm = $('#cancel_form'); function cancelOperations(opes_array, password = '') { + if (lock == 1) + return false + lock = 1; var data = { 'operations' : opes_array } $.ajax({ dataType: "json", @@ -429,6 +440,7 @@ $(document).ready(function() { }) .done(function(data) { coolReset(); + lock = 0; }) .fail(function($xhr) { var data = $xhr.responseJSON; @@ -442,7 +454,7 @@ $(document).ready(function() { displayErrors(getErrorsHtml(data)); break; } - + lock = 0; }); }