Источник данных для плагина автозаполнения jQuery - PullRequest
2 голосов
/ 29 октября 2009

Я использую плагин автозаполнения jQuery для простой формы поиска. У меня проблемы с преобразованием данных объекта JSON в массив для использования с автозаполнением.

Мой код:

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

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

Мои возвращаемые данные JSON выглядят так:

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

Почему-то похоже, что я получаю от этой функции getAutocompleteData пустую строку, и я не знаю, что не так.

Пожалуйста, помогите!

Ответы [ 2 ]

7 голосов
/ 29 октября 2009

Это потому, что $.getJSON является асинхронным. Как только вы отправите запрос, ваша функция getAutocompleteData() продолжит выполнение, ничего не возвращая.

Вы должны заключить все в функцию обратного вызова, которую вы передаете методу getJSON:

var output;
$.getJSON('AJAX/GetOrderedByNames', function(data) {
    var output = "";
    $.each(data, function(index, optionData) {
        output += optionData + "|";
    });
    $('#OrderedBy').autocomplete(output);
});
0 голосов
/ 29 октября 2009

Попробуйте изменить строку var ouput; на var output = '';

...