2012-10-29 83 views
0

我在使自動完成工作時遇到問題。JQuery自動完成 - 多個結果

我的自動填充框顯示多個結果,與DISTINCT問題無關。例如:如果我的自動完成功能顯示2種可能的選項,那麼它會在自動完成框中顯示兩次結果 - 即肺,肝再肺,肝再次。如果有三種可能的自動完成選項,則結果列表重複三次,依此類推。

在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; 
    } 
}) 

});

回答

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); 
      }, 
+0

感謝您的回答Barmar,大加讚賞。 –