Источник данных для плагина автозаполнения jQuery
-
10-07-2019 - |
Вопрос
Я использую плагин автозаполнения 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 = '';