jQueryui自动完成与JSON列表

时间:2013-11-07 21:47:55

标签: jquery json jquery-ui rest autocomplete

我是jQuery的菜鸟,我需要一些自动完成搜索的帮助。

我正在调用一个返回以下内容的REST服务:

    {
       "success":"true",
       "errmsg":"",
       "list":[
          {
             "ItemDesc":"18 16GA CMP GALV CORR PI",
             "ItemNumber":"78398",
             "ProdNumber":"1318CMP16",
             "Alias":"70370"
          },
          {
             "ItemDesc":"18 16GA CMP GALV BAND",
             "ItemNumber":"83063",
             "ProdNumber":"1318CMP16BG",
             "Alias":"18ACCMPB"
          },
          {
             "ItemDesc":"48 CMP BAND 12G",
             "ItemNumber":"120404",
             "ProdNumber":"1348CMPB",
             "Alias":"CMB1248"
          }
       ]
    }

我正在尝试自动填充以搜索这些结果&在列表中显示“ItemDesc”,以便用户可以单击一个。


      $(function () {
          $("#search").autocomplete({
              //source: "/ItemSearch/994/092468/CMP"
          });
      });

目前,自动完成列表中唯一显示的内容是“true”(来自REST调用的JSON结果中“成功”的值)。如何让它显示返回的“ItemDesc”列表?

1 个答案:

答案 0 :(得分:0)

我认为在您的自动填充功能中,您使用jQuery.ajax向服务提出请求。如果是,则将ajax dataType:设置为json,在success:设置中设置一个函数,然后在该函数中使用.map将返回的数据处理为形式你想要的。你可以在jQuery文档中找到这个here的一个很好的例子。以下是该页面上示例来源的相关摘录:

    $( "#city" ).autocomplete({
  source: function( request, response ) {
    $.ajax({
      url: "http://ws.geonames.org/searchJSON",
      dataType: "jsonp",
      data: {
        featureClass: "P",
        style: "full",
        maxRows: 12,
        name_startsWith: request.term
      },
      success: function( data ) {
        response( $.map( data.geonames, function( item ) {
          return {
            label: item.name + (item.adminName1 ? ", " + item.adminName1 : "") + ", " + item.countryName,
            value: item.name
          }
        }));
      }
    });