/ / Jquery - Ajax: оброблена подія декількох клацань за допомогою кнопки ajax “за методом кліку” - javascript, jquery, ajax

Jquery - Ajax: Неопрацьована подія з кількома кліками з кнопкою ajax "методом Click" - javascript, jquery, ajax

У мене є кнопка, де я ввожу запит ajax у віддалену веб-службу.

ритм набуває ефекту після перевірки умови, що випливає з успіху іншого запиту ajax (ось чому я користуюсь "ajaxSuccess")

Мій роздум виглядає так:

$("body").on("click", "#btn", function (e) {
$(document).ajaxSuccess(function (event, xhr, settings) {

if (settings.url === window.annonce.route.testService) {
xhr = xhr.responseJSON;
var msg = {},
if (xhr == 1) {   //case of traitement to be done
msg["attr1"] = attr1;
msg["attr2"] = attr2;
msg = JSON.stringify(msg);
console.log(msg);

$.ajax({
method: "POST",
url: servicePostulation,
data: {msg: msg},
dataType: "json",
success: function (data) {
console.log(data);
$("#btn").addClass("active");
},
error: function (data) {
console.log(data);
}
});
}
}
})

}

Я мій випадок "console.log (msg)" показує мені a багаторазова передача даних повідом , що означає багаторазові клікові події, і це саме проблема, яку я хочу зрозуміти,

Я спробував багато рішень з "$ (" body "). on (" click ") люблю :

  1. e.stopImmediatePropagation (); e.preventDefault ();
  2. stopPropagation ()
  3. один ()
  4. вимкнено ()
  5. скасувати ()

але нічого не працює, тож є якесь подальше рішення чи пояснення ??

Відповіді:

2 для відповіді № 1

Я пропоную відключити кнопку при натисканні користувачем, а потім увімкнути кнопку, коли ajax завершиться.

Onclick:

$("#btn").prop("disabled", true);

Ajax завершено / успіх:

$("#btn").prop("disabled", false);