在自动完成的 jQuery UI 中显示数据

康拉德·乌切霍夫斯基

我创建了一个自动完成功能,当我 console.log 时,它会显示我在远程 JSON 文件中的所有文件,但是当我在输入时开始 Type 时尝试显示它时,它不显示任何内容,没有错误,但它没有'根本没用。我也想让这个多选自动完成。但现在我希望它只在我开始输入时显示建议。

$(function () {
  $("#city").autocomplete({
    source: function (request, response) {
      $.ajax({
        url: $('#city').attr('data-source'),
        success: function (data) {
          for (var i = 0; i < data.length; i++) {
            data[i].loc_name
          }
        }
      })
    }
  })
})

JSON

[{"population":1729119,"token":"167|7|179|1296|55544|0","loc_name":"Warszawa"},{"population":758463,"token":"167|6|135|976|7644|0","loc_name":"Krak\u00f3w"},{"population":718960,"token":"167|5|113|789|58247|25218","loc_name":"\u0141\u00f3d\u017a Teofil\u00f3w"},{"population":718960,"token":"167|5|113|789|58247|25340","loc_name":"\u0141\u00f3d\u017a G\u00f3rna"},{"population":718960,"token":"167|5|113|789|58247|25282","loc_name":"\u0141\u00f3d\u017a \u0141askowice"}]
罗里·麦克罗森

问题是因为您的 AJAX 逻辑不太正确。AJAX 完成后,您需要将接收到的数据提供给response回调,如下所示:

$("#city").autocomplete({
  source: function (request, response) {
    $.ajax({
      url: $('#city').data('source'),
      success: function(data) {
        var output = data.map(function(o) {
          return {
            label: o.loc_name,
            value: o.token
          }
        });
        response(output);
      }
    })
  }
})

这是假设data返回的格式与自动完成预期的格式相匹配。如果不是,您将不得不修改数组 - 最好在服务器上。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章