Jquery自动完成返回结果,但结果没有显示任何内容

时间:2017-04-10 19:36:54

标签: jquery jquery-ui jquery-ui-autocomplete

我遇到jQuery自动完成问题。我正在使用下面的函数来获取inputACCO_KEY的结果。 问题是,我没有看到结果 - 但显然有些东西是从函数返回的,因为我看到div下面的自动完成形式 - 但是总是空的。有时它会更长,有时更短(取决于返回的结果数量),但它总是空的。如果我从那个空表中选择一些东西,输入中显示的结果也是空的。

功能:

$("#inputACCO_KEY").autocomplete({
      source: function (request, response) {
        $.ajax({
          method: 'post',
          url: "/wsSearchCAMERC/GetCAACCOSearchAll/",          
          data: {
            prefixText: $("#inputACCO_KEY").val(),
            count: 30
          },
          dataType: 'json',
          success: function (data) {
            response($(data).map(function (item, i) {              
              return {                
                label: item.First,
                value: item.Second
              };
            })
            );
          },
          error: function (data) {
            alert('error');
          }
        });
      },
      minLength: 3,
      select: function (event, ui) {        
        log("Selected: " + ui.item.value + " aka " + ui.item.id);
      }
    });
  });

enter image description here

结果类型为:

    ["{"First":"BOŠTJA S.P.","Second":"160001670"}", 
"{"First":"GOLF KLUB","Second":"110001615"}", "{"First":"IRENA","Second":"150001322"}"]

2 个答案:

答案 0 :(得分:1)

  

结果类型为:

     

[“{”First“:”BOŠTJASP。“,”Second“:”160001670“}”,   “{”First“:”GOLF KLUB“,”Second“:”110001615“}”,“{”First“:”IRENA“,”Second“:”150001322“}”]

这听起来很奇怪。我假设内部字符串分隔符已转义,因此您有一个字符串数组。 如果是这种情况,您需要将地图功能更改为:

var data = ["{\"First\":\"BOŠTJA S.P.\",\"Second\":\"160001670\"}", "{\"First\":\"GOLF KLUB\",\"Second\":\"110001615\"}", "{\"First\":\"IRENA\",\"Second\":\"150001322\"}"];
var result = $(data).map(function (idx, ele) {
    var item = JSON.parse(ele);
    return {
        label: item.First,
        value: item.Second
    };
});

console.log(result);

$( "#tags" ).autocomplete({
    source: function (request, response) {
        var data = ["{\"First\":\"BOŠTJA S.P.\",\"Second\":\"160001670\"}", "{\"First\":\"GOLF KLUB\",\"Second\":\"110001615\"}", "{\"First\":\"IRENA\",\"Second\":\"150001322\"}"];
        response($(data).map(function (idx, ele) {
            var item = JSON.parse(ele);
            return {
                label: item.First,
                value: item.Second
            };
        }));
    }
});
<link href="https://code.jquery.com/ui/1.12.0/themes/smoothness/jquery-ui.css" rel="stylesheet"/>
<script src="https://code.jquery.com/jquery-1.12.3.min.js"></script>
<script src="https://code.jquery.com/ui/1.12.0/jquery-ui.js"></script>


<div class="ui-widget">
    <label for="tags">Tags: </label>
    <input id="tags">
</div>

答案 1 :(得分:1)

Select方法必须返回false。否则,它不会像预期的那样工作。

完整的工作示例:

$.ajax.restore();