我正在尝试使用twitter typeahead.js来使用我的Fat Free Framework设置,但到目前为止还没有失败。
我在SearchController中的PHP代码:
function itemsearch($f3){ // search
$query = filter_var($f3->get('PARAMS.string'), FILTER_SANITIZE_STRING);
$db=$f3->get('DB');
$result = $db->exec("
SELECT * FROM items
WHERE itemName LIKE '%$query%'
");
echo json_encode($result);
}
我的路线:
$f3->route('GET /search/item/@string','SearchController->itemsearch');
如果我直接通过浏览器调用此路由,我的查询会得到一个很好的json结果。
我的HTML / jquery:
$(document).ready(function(){
var items = new Bloodhound({
datumTokenizer: function (datum) {
return Bloodhound.tokenizers.whitespace(datum.value);
},
queryTokenizer: Bloodhound.tokenizers.whitespace,
remote: {
url: '{{@BASE}}/search/item/$QUERY',
filter: function (items) {
return $.map(items.results, function (item) {
return {
value: item.itemName
};
});
}
}
});
items.initialize();
$('.typeahead').typeahead(null, {
displayKey: 'value',
source: items.ttAdapter()
});
});
如果我使用此代码并将网址替换为测试网址:' http://api.themoviedb.org/3/search/movie?query=%QUERY&api_key=470fd2ec8853e25d2f8d86f685d2270e'我得到了很好的预测结果,但是使用我自己的URL(在上面的代码中)没有任何反应。
如何让它与Fat Free Framework一起使用?
答案 0 :(得分:1)
我似乎犯了一个简单的错误,文档对此并不清楚:
$('.typeahead').typeahead(null, {
displayKey:'value',
source: items.ttAdapter()
});
应该是
$('.typeahead').typeahead(null, {
displayKey:'itemName',
source: items.ttAdapter()
});
所以displayKey值应该是'项目'你正在寻找json的结果。在我的情况下,json返回
itemName:whatever
所以我的displayKey值应为 itemName ,以显示值无论