我正在尝试将自动填充功能用于搜索框,自动填充的内容来自cgi脚本,通过返回JSON的Ajax。
让我们从自动填充的javascript部分开始。我可以使用硬编码列表让它工作得很好,但是当我使用它时没什么。
$(document).ready( function(){
$('#search_term').autocomplete({
source:function(request, response){
$.ajax({
url: './test2.cgi',
dataType: 'json',
data: {
maxRows: 5,
name_startsWith: request.term
},
success: function(data){
response( $.map(data.matches, function (item){
return {
label: item.label + "," + item.value,
value: item.value
}
}));
}
});
}
});
以下是我的test2.cgi perl脚本生成的JSON文件示例。
{"matches":[{"value":"color","label":"PATO:0000014"},{"value":"color hue","label":"PATO:0000015"},{"value":"color brightness","label":"PATO:0000016"},{"value":"color saturation","label":"PATO:0000017"},{"value":"color pattern","label":"PATO:0000019"},{"value":"color value","label":"PATO:0000310"}]}
我无法弄清楚我在哪里出错了。
编辑1: 我实际上在代码中使用类似的参数执行了一个ajax调用,所以我认为它应该可行。这是第一个ajax调用,我知道这一个事实,因为我能够处理json数据并在网站上显示它
function runSearch(term){
$('#results').hide();
$('tbody').empty();
var frmStr = $('#obo_search').serialize();
$.ajax({
url: './test.cgi',
dataType: 'json',
data: frmStr,
success: function (data, textStatus, jqXHR){
processJSON(data);
},
error: function(jqXHR, textStatus, errorThrown){
alert("Failed to perform search! textStatus:(" + textStatus + ") and errorThrow: (" + errorThrown + ")");
}
});
}