JQuery自动完成 - 多个结果

时间:2012-10-29 23:14:42

标签: jquery jquery-autocomplete

我在使自动完成工作时遇到问题。

我的自动填充框显示多个结果,与DISTINCT问题无关。

示例:如果我的自动完成显示2个可能的选项,那么它会在自动完成框中显示两次结果 - 即Lungs,Liver然后是Lungs,肝脏。如果有三个可能的自动完成选项,则结果列表重复三次,依此类推。

在Firebug中,我可以看到正在返回正确的Json,结果不会重复。

这是screen grab:

有谁知道问题是什么,拜托?

此致 熔体

$(document).ready(function () {

$('#search').autocomplete({
    source: function (request, response) {
        $.ajax({
            url: '/home/GetSR',
            type: 'GET',
            cache: false,
            contentType: "application/json; charset=utf-8",
            data: { term: request.term },
            dataType: 'json',
            success: function (json) {

                response($.map(json, function (label, value) {
                    return json;

                }));

            },
            error: function (XMLHttpRequest, textStatus, errorThrown) {
                alert('error - ' + textStatus);
               // console.log('error', textStatus, errorThrown);
            }
        });
    },
    minLength: 2,
    select: function (event, ui) {

       //  alert('you have selected ' + ui.item.label + ' ID: ' + ui.item.value);
          $('#search').val(ui.item.label);

        // save the auto complete value id to be used later
        setACValue(ui.item.value); 

        return false;
    }
})

});

1 个答案:

答案 0 :(得分:0)

success: function (json) {
                response($.map(json, function (label, value) {
                    return json;
                }));
            },

应该是:

success: function (json) {
                response($.map(json, function (label, value) {
                    return value;
                }));
            },

每次处理JSON元素数组的元素时,都会返回整个JSON数组,而不是只返回一个元素的值。所以你的$.map正在返回一个二维数组。

或者,您可以这样做:

success: function (json) {
                response(json);
            },