/ / Jquery - Ajax: Nicht behandeltes Ereignis mit mehreren Klicks mit Ajax-Schaltfläche "On Click-Methode" - Javascript, Jquery, Ajax

Jquery - Ajax: Nicht behandeltes Ereignis mit mehreren Klicks mit Ajax-Schaltfläche "On Click-Methode" - Javascript, Jquery, Ajax

Ich habe eine Schaltfläche, über die ich eine Ajax-Anforderung an einen entfernten Webdienst weiterleite.

Die Eigenschaft wird wirksam, nachdem eine Bedingung überprüft wurde, die sich aus dem Erfolg einer anderen Ajax-Anforderung ergibt (deshalb benutze ich "ajaxSuccess")

Meine Funktion sieht so aus:

$("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);
}
});
}
}
})

}

Ich mein Fall, der "console.log (msg)" zeigt mir eine Mehrfachversand von Datenmitteilungen , was ein Mehrfachklickereignis bedeutet, und das ist genau das Problem, das ich evitieren möchte,

Ich habe viele Lösungen mit dem versucht "$ (" body "). on (" click ") mögen :

  1. e.stopImmediatePropagation (); e.preventDefault ();
  2. stopPropagation ()
  3. ein()
  4. aus()
  5. lösen()

aber nichts funktioniert, gibt es also eine weitere lösung oder erklärung ??

Antworten:

2 für die Antwort № 1

Ich empfehle, die Schaltfläche zu deaktivieren, wenn der Benutzer auf sie klickt, und sie dann zu aktivieren, wenn Ajax abgeschlossen ist.

Onclick:

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

Ajax komplett / Erfolg:

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