2

我正在为一个简单的搜索表单使用 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函数返回的是一个空字符串,我不知道出了什么问题。

请帮忙!

4

2 回答 2

7

这是因为$.getJSON是异步的。一旦您发送请求,您的函数就会getAutocompleteData()继续执行,不返回任何内容。

您应该将所有内容包含在您传递给 getJSON 方法的回调函数中:

var output;
$.getJSON('AJAX/GetOrderedByNames', function(data) {
    var output = "";
    $.each(data, function(index, optionData) {
        output += optionData + "|";
    });
    $('#OrderedBy').autocomplete(output);
});
于 2009-10-29T15:55:46.847 回答
0

尝试将var ouput;行更改为var output = '';

于 2009-10-29T15:56:58.320 回答