Pregunta

Estoy usando el complemento de autocompletar de jQuery para un formulario de búsqueda simple. Tengo problemas para convertir mis datos de objetos JSON en una matriz para usar con autocompletar.

Mi código:

var listOfOrderedByNames = getAutocompleteData();
$('#OrderedBy').autocomplete(listOfOrderedByNames);

function getAutocompleteData() {
    var output;
    $.getJSON('AJAX/GetOrderedByNames', function(data) {
        $.each(data, function(index, optionData) {
            output += optionData + "|";
        });
    });
    return output;
}

Mis datos JSON que se devuelven se ven así:

    ["Jimmy","John", "Etc",null]

Por alguna razón, parece que lo que estoy recuperando de esa función getAutocompleteData es una cadena vacía y no sé qué está mal.

¡Por favor ayuda!

¿Fue útil?

Solución

Es porque $ .getJSON es asíncrono. Tan pronto como envíe la solicitud, su función getAutocompleteData () continúa ejecutándose, sin devolver nada.

Debería incluir todo en la función de devolución de llamada que está pasando al método getJSON:

var output;
$.getJSON('AJAX/GetOrderedByNames', function(data) {
    var output = "";
    $.each(data, function(index, optionData) {
        output += optionData + "|";
    });
    $('#OrderedBy').autocomplete(output);
});

Otros consejos

Intente cambiar la línea var output; a var output = '';

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top