【问题标题】:jQueryUI autocompletejQueryUI 自动完成
【发布时间】:2014-09-12 03:24:24
【问题描述】:

我正在尝试使用远程源 (json) 进行自动完成,但我不知道该怎么做才能使其正常工作。

我收到如下回复:

{
  "status": "ok",
  "count": 4,
  "data": [
    {
      "nickname": "Deadly",
      "id": 501689800
    },
    {
      "nickname": "Deadly00",
      "id": 517095041
    },
    {
      "nickname": "Deadly001",
      "id": 504471830
    },
    {
      "nickname": "DeadLy01",
      "id": 500877077
    }
  ]
}

我正在使用的脚本:

$(function() {
    var cache = {};
    $("#search").autocomplete({
        minLength: 3,
        source: function(request, response) {
                    var term = request.term;
                    if (term in cache) {
                        response(cache[term]);
                        return;
                    }
            $.getJSON("path/to/heaven/" + term, function(data) {
                cache[term] = data;
                response(data);
            });
        }
    });
});

自动完成显示适量的“建议字段”,但唯一的内容是“ok”。 如何更改它以显示昵称?

【问题讨论】:

  • response(data) 应该是 response($.map(data.data, function(e){return e.nickname}))。注意data.data,传入的data 是整个对象(如您问题的回复中所述),该对象具有data 属性。

标签: jquery jquery-ui autocomplete


【解决方案1】:

试试下面的,而不是响应(数据)。

response($.map(data, function(item) {
    return {
        value: item.nickname
    }
}))

如果您遇到任何错误,您可以尝试this

【讨论】:

  • 这会导致建议列表生成适当数量的结果,但它们都是空的。
【解决方案2】:

DEMO

你应该使用like

$( "#tags" ).autocomplete({
//source: availableTags
    source: function(request, response) {
            var term = request.term;
            $.getJSON("path/to/heaven/" + term, function(data) {
                cache[term] = data;
                //response(data);
                response($.map(data.data, function(item) {
                return {
                    value: item.nickname
                }
                }));
            });        

        }
});

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-03-29
    • 1970-01-01
    • 2013-10-28
    • 2013-07-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多