这似乎是一个黑洞:经过一个小时的搜索jQuery UI网站,Stack Overflow和谷歌搜索,我还没有找到有关如何编写AutoComplete 服务器端 的最基本信息。
什么参数传递给服务器,JSON响应应该是什么样?
我一定想念一些东西,因为其他人怎么学到的呢?网站似乎只讨论客户端JavaScript代码,而没有讨论协议或服务器端示例。
我需要足够的资源来使最简单的远程示例正常工作。
什么参数传递给服务器
您需要传递request.term到服务器端代码(来自文档):
request.term
具有单个属性“ term”的请求对象,该属性引用文本输入中当前的值。
基本上,在您的autocomplete代码中,您将具有以下内容:
autocomplete
$("#autocomplete").autocomplete({ // request.term needs to be passed up to the server. source: function(request, response) { ... } });
JSON响应应该是什么样?
该autocomplete小部件需要具有label和value属性的JSON对象数组(尽管如果仅指定value,它将用作标签)。因此,在最简单的情况下,您可以仅返回如下所示的数据:
label
value
[ { label: 'C++', value: 'C++' }, { label: 'Java', value: 'Java' } { label: 'COBOL', value: 'COBOL' } ]
如果您需要更复杂的东西,可以使用函数的success参数对$.ajax自动完成获取之前返回的数据进行规范化:
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 } })); } });
这段代码摘自此处的示例(这是在更复杂的场景中ajax +自动完成工作的一个很好的整体示例)。
基本上,要解决的问题是,在成功执行ajax请求后,将使用(对$.map)将接收到的数据规范化为autocomplete小部件期望的数据。
$.map
希望有帮助。