【问题标题】:Display data in autocomplete jQuery UI在自动完成 jQuery UI 中显示数据
【发布时间】:2017-08-17 09:37:35
【问题描述】:

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

$(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"}]

【问题讨论】:

    标签: javascript jquery jquery-ui autocomplete


    【解决方案1】:

    问题是因为您的 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 返回的格式与自动完成期望的格式相匹配。如果不是,您将不得不修改数组 - 最好在服务器上。

    【讨论】:

    • 但这对我不起作用,我的 json 看起来像这样,我只想在自动完成时显示“loc_name”,但只发布“token”:[{"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"}]
    • 在这种情况下,您需要修改格式以返回 {label: '', value: ''} 对象的数组。我为您更新了答案,尽管在服务器端这样做确实会更好。另请注意,我假设您要用于标签/值的属性。如果需要,请随时修改。
    • 我只是将我的代码更改为您的解决方案,但我收到一个错误,label: o.loc_name, value: o.token 是“意外令牌:”
    • 抱歉,我错过了退货声明。立即尝试
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-21
    • 1970-01-01
    • 2013-07-19
    相关资源
    最近更新 更多