JQuery自动完成的JSON

3

我从php文件得到了JSON响应。

[{
  "NAME": "Kiev"
}, {
  "NAME": "Kiev metro"
}, {
  "NAME": "Kiev-Dnepro"
}, {
  "NAME": "Kiev-Dnepro"
}, {
  "NAME": "Kiev-Donetsk"
}, {
  "NAME": "Kiev-Donetsk"
}]

我该如何在标准的Jquery自动完成中使用它?自动完成函数会发送请求,但似乎无法解析这个JSON的响应(简单数组可以正常工作)。请帮助我。


Derin,是的,就是这样。运行良好!但现在我想稍微修改一下。我得到了更多的响应数据,我想在主自动完成输入框附近显示它。

var infoGISName = null;
var infoGISType = null;
var infoGISLocationID = null;
var infoGISParentID = null;

$('#GISName').autocomplete({
source: function(request, response) {
  $.getJSON("autocomplete.php", {
    term: request.term
  }, function(result) {
    response($.map(result, function(item) {
      infoGISName = item.NAME;
      infoGISType = item.GIS_TYPE;
      infoGISLocationID = item.LOCATION_ID;
      infoGISParentID = item.PARENT_ID;
      return item.NAME;
    }));
  });
},
change: function(event, ui) {
  $('#infoGISName').html(infoGISName);
  $('#infoGISType').html(infoGISType);
  $('#infoGISLocationID').html(infoGISLocationID);
  $('#infoGISParentID').html(infoGISParentID);
},
minLength: 3

});
});

当我更改自动完成输入框中的文本时,如何更改字段中的数据?现在我只能看到JSON记录集中的最后一个值。


你在用哪个插件?还是这个 jQuery UI Autocomplete - Annika Backstrom
如果那是实际的响应,那么它也不会起作用,因为它缺少最后一个括号,因此不是有效的数组。 - Coin_op
你能否展示一下你使用的代码,这样我们就可以看到完整的情况? - Nathan Hess
1个回答

6
您可以使用formatItem选项:
$('#foo').autocomplete({ 
    url : '/foo', 
    formatItem: function(item, position, length) {
        return item.NAME;
    } 
});

对于jquery ui自动完成功能,您可以通过以下方式实现:

$('#foo').autocomplete({
    source: function(request, response) {
        $.getJSON('/foo.php', { q: request.term }, function(result) {
            response($.map(result, function(item) {
                return item.NAME;
            }));
        });
    }
});

我尝试使用http://jqueryui.com/demos/autocomplete/,因为我下载了完整的JUI包。 - Castro
你建议我使用另一个吗? - Castro
@Castro,请查看我的更新,其中包含使用jqueryui自动完成功能的示例。 - Darin Dimitrov
Derin,没错。很好用!但现在我想稍微修改一下。我得到了更多的响应数据,我想在邮件自动完成输入框附近显示它。 - Castro

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接