2009-10-29 2 views
2

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

Мой код:

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

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

ответ

7

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

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

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

спасибо многих людей, забыл о том, что – Jimmy

0

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

+3

, что привычка менять что-либо –