0

我无法让自动完成功能正常工作。

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

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

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

这是一个屏幕截图:

请问有人知道是什么问题吗?

问候融化

$(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;
    }
})

});

4

1 回答 1

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);
            },
于 2012-10-29T23:58:38.447 回答