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!

È stato utile?

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 = '';

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top