Gibts eine Möglichkeit zu überprüfen ob ein AJAX Request bereits läuft und falls es so is ihn abzubrechen?
Ajax.Request bietet meines Wissens keine Funktion zum Abbrechen, aber man kann natürlich auf das dahinterliegende XMLHttpRequest-Objekt zugreifen und dessen abort-Methode aufrufen:
var request = new Ajax.Request(...);
...
request.transport.abort();
Allerdings weiß ich nicht, ob das zuverlässig verhindert, dass der onSuccess-Handler usw. aufgerufen wird. Ich würde daher einen anderen Ansatz wählen, nämlich in der onSuccess-Funktion prüfen, ob die Antwort sich auf den letzten Request bezieht. Z.B. speicherst du das zuletzt angelegte Ajax.Request-Objekt einmal zentral und einmal in einer lokalen Variable. In onComplete prüfst du dann, ob beide noch identisch sind. Wenn nicht, tue nichts, weil schon ein weiterer Request auf dem Weg ist.
var lastRequest;
new Form.Observer('feld', 0.5, function (form, value) {
var request;
request = lastRequest = Ajax.Request(url, {
onSuccess: function (transport) {
if (request == lastRequest) {
/* ... Nutzlast ... */
}
}
});
});
Mathias