您需要将要返回的对象转换为jQueryUI期望的格式的数组。
您可以
$.map用来将
dealers对象转换为该数组。
$('#dealerName').autocomplete({ source: function (request, response) { $.getJSON("/example/location/example.json?term=" + request.term, function (data) { response($.map(data.dealers, function (value, key) { return { label: value, value: key }; })); }); }, minLength: 2, delay: 100});请注意,当您选择一个项目时,“键”将放置在文本框中。您可以通过调整回调函数返回的
label和
value属性来更改此设置
$.map。
另外,如果您有权访问生成JSON的服务器端代码,则可以更改返回数据的方式。只要数据:
- 是具有
label
属性,value
属性或两者兼有的对象的数组,或者 - 是一个简单的字符串数组
换句话说,如果可以这样格式化数据:
[{ value: "1463", label: "dealer 5"}, { value: "269", label: "dealer 6" }]或这个:
["dealer 5", "dealer 6"]
然后,您的Javascript变得更加简单:
$('#dealerName').autocomplete({ source: "/example/location/example.json"});


