Javascript 作为数据源返回给jqueryui autocomplete的JSON对象应该是什么样子?

Javascript 作为数据源返回给jqueryui autocomplete的JSON对象应该是什么样子?,javascript,jquery,json,jquery-ui,autocomplete,Javascript,Jquery,Json,Jquery Ui,Autocomplete,我正在查看本页上的示例源代码(粘贴在下面): 我返回多个源,并希望以分类格式显示数据,如本例所示: 首先,我只是尝试显示数据源。默认情况下,jQuery UI autocomplete接受两种格式的数据: 字符串数组,如[“foo”,“bar”] 具有标签和值属性的对象数组,如[{label:“foo”,value:1000},{label:“bar”,value:2000}] 您要找的不是实际的自动完成小部件,而是定制的或扩展的版本 为了使用它,您应该在加载jQuery和jQuery

我正在查看本页上的示例源代码(粘贴在下面):

我返回多个源,并希望以分类格式显示数据,如本例所示:


首先,我只是尝试显示数据源。

默认情况下,jQuery UI autocomplete接受两种格式的数据:

  • 字符串数组,如
    [“foo”,“bar”]
  • 具有标签和值属性的对象数组,如
    [{label:“foo”,value:1000},{label:“bar”,value:2000}]

您要找的不是实际的自动完成小部件,而是定制的或扩展的版本

为了使用它,您应该在加载jQuery和jQuery UI后添加以下代码,这扩展了默认的自动完成功能:

$.widget( "custom.catcomplete", $.ui.autocomplete, {
_create: function() {
  this._super();
  this.widget().menu( "option", "items", "> :not(.ui-autocomplete-category)" );
},
_renderMenu: function( ul, items ) {
  var that = this,
    currentCategory = "";
  $.each( items, function( index, item ) {
    var li;
    if ( item.category != currentCategory ) {
      ul.append( "<li class='ui-autocomplete-category'>" + item.category + "</li>" );
      currentCategory = item.category;
    }
    li = that._renderItemData( ul, item );
    if ( item.category ) {
      li.attr( "aria-label", item.category + " : " + item.label );
    }
  });
 }
});

根据示例
[{label:“anders”,category::},{label:“andreas”,category:::},{label:“andreas”,category::},{label:“antal”,category::},{label:“annhhx10”,category:“Products”},{label:“annk K12”,category:“Products”},您的ajax应该是这样的对象数组,{标签:“annttop C13”,类别:“产品”},{标签:“安德森”,类别:“人”},{标签:“安德烈亚斯·安德森”,类别:“人”},{标签:“安德烈亚斯·约翰逊”,类别:“人”}]
这会使结果出现!:)但它不会显示类别!它会将所有类别显示为一个列表。我如何将它们分成两个列表?例如:如果你能制作小提琴,它将非常有用。我不知道你的意思。我只是在示例中使用代码。我建议你浏览这篇有相关示例的博客文章。
{source1:[],source2:[]}
$.widget( "custom.catcomplete", $.ui.autocomplete, {
_create: function() {
  this._super();
  this.widget().menu( "option", "items", "> :not(.ui-autocomplete-category)" );
},
_renderMenu: function( ul, items ) {
  var that = this,
    currentCategory = "";
  $.each( items, function( index, item ) {
    var li;
    if ( item.category != currentCategory ) {
      ul.append( "<li class='ui-autocomplete-category'>" + item.category + "</li>" );
      currentCategory = item.category;
    }
    li = that._renderItemData( ul, item );
    if ( item.category ) {
      li.attr( "aria-label", item.category + " : " + item.label );
    }
  });
 }
});
var data = [
      { label: "anders", category: "" },
      { label: "andreas", category: "" },
      { label: "antal", category: "" },
      { label: "annhhx10", category: "Products" },
      { label: "annk K12", category: "Products" },
      { label: "annttop C13", category: "Products" },
      { label: "anders andersson", category: "People" },
      { label: "andreas andersson", category: "People" },
      { label: "andreas johnson", category: "People" }
    ];