我正在使用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