我正在建立一个使用twitter typeahead的自动完成功能,使用对我的PHP文件的ajax JSON调用来获取一些数据,但它会在下拉结果列表中显示以下内容:
未定义
未定义
未定义
但当我这样做时:
alert(data);
我得到了正确的数据显示,但不知何故自动完成列表一直显示未定义,香港专业教育学院阅读并尝试了一些文章在stackoverflow上的一些文章,但我似乎无法让它工作.
我必须遵循jquery代码:
$('.item-name .typeahead').typeahead(null,{
source: function (query, process) {
$.ajax({
url: 'ajaxItems.PHP',
type: 'POST',
dataType: 'JSON',
data: 'query=' + query,
success: function(data) {
// alert(data);
process(data);
}
});
}
});
<?PHP
$results = array();
$results[] = 'jeans';
$results[] = 'sweater';
$json = json_encode($results);
print_r($json);
?>
JSON输出如下:
["jeans","sweater"]
我希望有人可以对我做错的事情发表一些看法,或者指出我正确的方向.提前致谢!
编辑
我使用以下typeahead文件:
http://twitter.github.io/typeahead.js/releases/latest/typeahead.bundle.js
解决方法:
我使用source时遇到了类似的问题:我最终使用了remote:
在你的情况下,它会是这样的:
$('.item-name .typeahead').typeahead({
remote: 'ajaxItems.PHP?query=%QUERY'
});
请注意,我在typeahead上删除了null(null,{因为我认为没有必要,但我可能错了.显然,你必须使用$_GET而不是$_POST,但我认为这样更容易.