Ich habe eine Funktion, die eine bestimmte Menge von Daten zurückgibt, die in AJAX ausgelöst werden, wenn Sie eingeben. Jedes Mal wird es zur Oracle DB gehen und die Daten holen und die Ausgabe anzeigen.So fügen Sie eine Verzögerung zu einer AJAX-Anforderung hinzu, um Leistungsprobleme zu vermeiden
Aber sobald ich eine "lange" Zeichenfolge wie "Hallo mein Name ist" eingeben, startet es eine einzige Anfrage jedes Mal, wenn ich einen Schlüssel (10 Anfragen zu einem Zeitpunkt) eingeben und es dauert 5 Sekunden zu bekommen 1 Anfrage Antwort.
Dies verursacht Leistungsproblem in meiner Anwendung. Wie könnte ich das bitte vermeiden?
Ich habe bereits versucht, dynamisch und verzögern, die nicht funktionieren. Ich verwende typeahead 2 (typeahead-bs2.min.js).
$("#customer_description").typeahead({
dynamic: true,
delay: 5000,
source: function (query, process) {
$.ajax({
url: '/data/customer.php',
type: 'POST',
dataType: 'JSON',
//contentType: "text/json; charset=utf-8",
data: {
all: query,
},
success: function(data) {
//console.log(data);
process(data);
}
});
}
});
Verzögerung hilft nicht. Es würde immer noch 10 Abfragen machen, nur später. Denken Sie über die Eingabe nach. Sollte die Zeichenfolge vor der Abfrage einige Kriterien erfüllen, z. B. eine Mindestlänge, oder kann die Abfrage bei der Eingabe ausgeführt werden usw. – Sami
Welche Version von typeahead ist das? Können Sie [eine neuere Version] (https://github.com/twitter/typeahead.js) verwenden? – whipdancer