Ich habe ein Eingabefeld mit Ajax-Aufruf (füllen einige andere Eingabefelder) auf Blur und Schaltflächen mit Click-Ereignisse (einige der Click-Ereignisse setzen Eingabefelder auf eine leere Zeichenfolge). Zum BeispielSo vermeiden Sie Ajax Async bei Verwendung von Jquery-Ereignissen
$("#input_field1").on('blur', function() {
$.ajax({
//async:false,
method: "GET",
url: "my_ajax.php",
cache: false,
dataType: "json",
data: { data1: $("#input_field1").val()},
success: function(result){
$("#some_other_input").val(result.data2);
}
})
});
$("#button1").on('click', function() {
$("#input_field1").attr("readonly", true);
var form = $("#my_form");
form.validate().resetForm();
form[0].reset();//form contains #some_other_input
});
Wenn das Eingabefeld fokussiert wird und dann Benutzer klickt auf eine beliebige Taste, Unschärfe-Ereignis ausgelöst und natürlich nach dem entsprechenden Click-Ereignis. Wenn ich async: false nicht verwende, füllt ajax diese Eingabefelder, nachdem das click -Ereignis verarbeitet wurde und andere Eingaben gefüllt werden, anstatt leer zu sein.
Lesen über async: false sollte immer vermieden werden, ich brauche einen Weg für meine Klickereignisse zu warten, bis Ajax fertig ist, wenn es in diesem Moment einen Ajax-Aufruf gibt.
Erster A in AJAX steht für Asynchronous. Was genau willst du machen? – Walk
Sie müssen * async * umarmen, anstatt damit zu kämpfen. Dies könnte bedeuten, dass Sie überdenken, wie Ereignisse zusammenarbeiten, oder ob Sie während der Verarbeitung möglicherweise Tasten deaktivieren, oder dass Sie einen "Bitte warten" -Stilblock aufstellen müssen. –
Das Deaktivieren der Schaltfläche während der Verarbeitung von Ajax führt dazu, dass das Klickereignis nicht ausgelöst wird. Ich brauche wirklich Benutzer in der Lage zu sein, auf einen Knopf zu klicken, gleich nachdem input_field1 gefüllt ist. –