我一直在这方面工作,并搜索了所有其他示例,仍然无法弄明白,尝试使用jquery ui自动完成,第一次尝试将这些全部放在一起。这是我的JS:
$(document).ready(function () {
$("#search-title").autocomplete({
source: function ( request, response ) {
$.ajax({
url: "/include/autocomplete",
dataType: "json",
data: {
term: request.term
},
success: function (data) {
response( $.map( data.stuff, function ( item ) {
return {
label: item.name,
value: item.name
};
}));
}
});
},
minLength: 2,
focus: function (event, ui) {
$(event.target).val(ui.item.label);
return false;
},
select: function (event, ui) {
$(event.target).val(ui.item.label);
window.location = ui.item.value;
return false;
}
});
});
检查Firebug中的响应,我想我在这里获得了格式正确的JSON:
{"stuff":[ {"label" : "Dragon", "value" : "http://site.com/animal/firebreathers"}] }
但出于某种原因,它没有挂钩。在我点击minLength后,一个小的空盒子将在搜索栏下方打开,但没有任何东西在那里。
更新:当我添加" alert(item);"在响应调用中,我得到一个窗口,上面写着" site.com上的页面说:object Object" - 这可能是问题吗?
答案 0 :(得分:2)
我终于明白了,感谢我提出的暗示评论。
在我从Jquery UI站点复制的返回中,我有:
label: item.name,
value: item.name
将其更改为:
label: item.label,
value: item.value
解决了我与jQuery的斗争。我不知道这是不是很好的做法,但它终于有效了!
答案 1 :(得分:0)
尝试在数据类型中使用jsonp而不是json。