Origine dati per il plugin di completamento automatico di jQuery
-
10-07-2019 - |
Domanda
Sto usando il plugin di completamento automatico di jQuery per un semplice modulo di ricerca. Ho problemi a convertire i dati dei miei oggetti JSON in un array da utilizzare con il completamento automatico.
Il mio codice:
var listOfOrderedByNames = getAutocompleteData();
$('#OrderedBy').autocomplete(listOfOrderedByNames);
function getAutocompleteData() {
var output;
$.getJSON('AJAX/GetOrderedByNames', function(data) {
$.each(data, function(index, optionData) {
output += optionData + "|";
});
});
return output;
}
I miei dati JSON restituiti si presentano così:
["Jimmy","John", "Etc",null]
Per qualche motivo sembra che ciò che sto tornando da quella funzione getAutocompleteData
sia una stringa vuota e non so cosa sia sbagliato.
Per favore aiutate!
Soluzione
È perché $ .getJSON
è asincrono. Non appena si invia la richiesta, la funzione getAutocompleteData ()
continua l'esecuzione, non restituendo nulla.
Dovresti racchiudere tutto nella funzione di callback che stai passando al metodo getJSON:
var output;
$.getJSON('AJAX/GetOrderedByNames', function(data) {
var output = "";
$.each(data, function(index, optionData) {
output += optionData + "|";
});
$('#OrderedBy').autocomplete(output);
});
Altri suggerimenti
Prova a cambiare var output;
linea in var output = '';