typeahead.js远程返回任何内容

时间:2015-04-13 10:52:15

标签: javascript php jquery typeahead.js

我似乎无法使typeahead.js的远程功能正常工作。我发布了开始的代码:

$(document).ready(function() {
    var locations = new Bloodhound({
        datumTokenizer: Bloodhound.tokenizers.obj.whitespace('value'),
        queryTokenizer: Bloodhound.tokenizers.whitespace,
        remote: baseUrl + 'restaurants/fetchZIP/%QUERY'
    });

    $('#location').typeahead({
        hint: true,
        highlight: true,
        minLength: 1,
        source: locations.ttAdapter()
    });
    /*$('#location').keyup(function() {
        $.ajax({
            method: 'POST',
            dataType: 'json',
            url: baseUrl + 'restaurants/fetchZIP/',
            data: $('#add_restaurant').serialize(),
            success: function(data) {
                console.log(data);
            }
        });
    });*/
});

这是我执行Bloodhound远程操作的文件,我在所需的输入字段上使用typeahead。评论部分是一个测试,以确保我的DB声明是否有问题。我不得不重写以下代码来进行测试,但它基本上只是从GET切换到POST:

public function fetchZIP($query)
{
    $cantons = DataLoc::find(array('zip LIKE' => '%'.$query));
    echo json_encode($cantons);
}

这是&restaurant; / fetchZIP /'页面(它用CodeIgniter编写)。所以,我真的不知道发生了什么,因为我无法在typeahead()函数中调用console.log(),所以我希望任何人都可以让我回到正确的方向。

1 个答案:

答案 0 :(得分:2)

首先,您必须在定义后立即使用locations.initialize()初始化猎犬。

这是初始化类型的方式

  

typeahead(选项,[*数据集])

您在选项中包含了源(或数据集),因此请尝试使用此类

$('#location').typeahead({
    hint: true,
    highlight: true,
    minLength: 1
},{
    source: locations.ttAdapter()
});

希望这有帮助。