У мене є кнопка, де я ввожу запит 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 ") люблю :
- e.stopImmediatePropagation (); e.preventDefault ();
- stopPropagation ()
- один ()
- вимкнено ()
- скасувати ()
але нічого не працює, тож є якесь подальше рішення чи пояснення ??
Відповіді:
2 для відповіді № 1Я пропоную відключити кнопку при натисканні користувачем, а потім увімкнути кнопку, коли ajax завершиться.
Onclick:
$("#btn").prop("disabled", true);
Ajax завершено / успіх:
$("#btn").prop("disabled", false);