Ich habe ein Problem mit mehreren Ajax-Funktionen, bei denen die beforeSend
des Sekunde ajax post wird vor dem ausgeführt complete
Funktion der Erste ajax.
Die Ladeklasse, die ich vor dem Senden zum Platzhalter hinzufüge, funktioniert für den ersten Ajax-Aufruf. Kurz nachdem die erste Ajax-Anforderung abgeschlossen ist, wird die Klasse jedoch entfernt und beim zweiten und weiteren Aufrufen nie wieder angehängt (denken Sie an rekursive Aufrufe).
Beim Debuggen zeigt es, dass die beforeSend
Funktion des zweiten Ajax-Aufrufs wird zuerst aufgerufen und die complete
Funktion des ersten Ajax-Aufrufs wird später aufgerufen. Was offensichtlich ist, da die vom ersten Ajax-Aufruf in die Seite eingefügten Rückgabedaten den zweiten Aufruf starten.
Kurz gesagt, es ist durcheinander. Gibt es eine Möglichkeit, dies zu klären?
Der Funktionscode lautet wie folgt
function AjaxSendForm(url, placeholder, form, append) {
var data = $(form).serialize();
append = (append === undefined ? false : true); // whatever, it will evaluate to true or false only
$.ajax({
type: 'POST',
url: url,
data: data,
beforeSend: function() {
// setting a timeout
$(placeholder).addClass('loading');
},
success: function(data) {
if (append) {
$(placeholder).append(data);
} else {
$(placeholder).html(data);
}
},
error: function(xhr) { // if error occured
alert("Error occured.please try again");
$(placeholder).append(xhr.statusText + xhr.responseText);
$(placeholder).removeClass('loading');
},
complete: function() {
$(placeholder).removeClass('loading');
},
dataType: 'html'
});
}
Und die Daten enthalten das folgende Snippet von Javascript/Jquery, das eine weitere Ajax-Anfrage prüft und startet.
<script type="text/javascript">//<!--
$(document).ready(function() {
$('#restart').val(-1)
$('#ajaxSubmit').click();
});
//--></script>