让Typeahead.js与Fat Free Framework一起使用

时间:2015-01-30 13:17:44

标签: typeahead.js fat-free-framework

我正在尝试使用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一起使用?

1 个答案:

答案 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 ,以显示值无论