向服务器传递什么参数
你需要通过request.term
到您的服务器端代码(来自文档):
一个请求对象,有一个
称为“term”的属性,指的是
为当前文本中的值
输入。
基本上,在你的autocomplete
代码,你会得到类似这样的东西:
$("#autocomplete").autocomplete({
// request.term needs to be passed up to the server.
source: function(request, response) { ... }
});
JSON 响应应该是什么样子
喜欢?
The autocomplete
小部件需要一个 JSON 对象数组label
and value
属性(尽管如果您只是指定value
,它将用作标签)。因此,在最简单的情况下,您可以返回如下所示的数据:
[
{ label: 'C++', value: 'C++' },
{ label: 'Java', value: 'Java' }
{ label: 'COBOL', value: 'COBOL' }
]
如果你需要更复杂的东西,你可以使用success
的论点$.ajax
函数在自动完成获取数据之前标准化您返回的数据:
source: function( request, response ) {
$.ajax({
/* Snip */
success: function(data) {
response($.map( data.geonames, function( item ) {
return {
label: item.name + (item.adminName1 ? ", " + item.adminName1 : "") + ", " + item.countryName,
value: item.name
}
}));
}
});
此代码取自示例here http://jqueryui.com/demos/autocomplete/#remote-jsonp(这是 ajax + 自动完成在更复杂的场景中工作的一个很好的例子)。
基本上,发生的情况是,在成功的 ajax 请求后,接收到的数据将被标准化(使用$.map
)到自动完成小部件所期望的内容。