Ich bin an der jQuery UI zum automatischen Vervollständigung der Dokumentation suchen und an ihrem Beispiel für einen Rückruf mit Caching suchen:Mehrere automatische Vervollständigung Calls - jQuery
$(function() {
var cache = {}, lastXhr;
$('#Field').autocomplete({
minLength: 2,
delay: 600,
source: function(request, response) {
var term = request.term;
if(term in cache) {
response(cache[term]);
return;
}
lastXhr = $.post('LoadData', function(data, status, xhr) {
cache[term] = data;
if(xhr === lastXhr) {
response(data);
}
});
}
});
});
Die Code-Leitungen bis ein Feld zum automatischen Vervollständigung verwenden und speichert einen Cache von Abfragen, die bereits getroffen wurden. Die folgende Zeile verwendet wird, so dass, wenn eine Abfrage dauert länger als der andere ist es nicht die zur automatischen Vervollständigung Werte ersetzen:
if(xhr === lastXhr) {
response(data);
}
Wenn ich anfangen ein paar Buchstaben eingeben und es geht an den Server, die Daten abzufragen, dann ich pausieren und beginnen Sie erneut zu tippen, es wird eine weitere Reise zum Server auslösen. Wenn die erste Abfrage nach der zweiten Abfrage beendet wird, wird das Ladesymbol nicht mehr gelöscht. Ich nehme an, dies ist, weil es nie den Callback response()
aufruft. Gibt es eine Möglichkeit, die erste Anfrage nach einer zweiten Anfrage abzubrechen?
Das hört nicht auf das Symbol der automatischen Vervollständigung Laden von immer drehen. – Dismissile
Welcher Code stoppt den Spinner? –
Anrufantwort(). Aber ich möchte nicht 'response (null)' nennen, weil dann die Liste gelöscht wird. Sie müssen in der Lage sein, die automatische Vervollständigung zu bestätigen, dass der Anruf beendet wurde, ohne die Daten zu überschreiben. – Dismissile