Вопрос

Я использую плагин автозаполнения 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 функция - это пустая строка, и я не знаю, что не так.

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

Это было полезно?

Решение

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

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

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

Другие советы

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top