2014-02-07 39 views
1

我有一些问题CI和事先键入的内容,我没有得到任何结果;/笨和Typeaheadjs - 问题

JS

var countries = new Bloodhound({ 
    datumTokenizer: function(d) { return Bloodhound.tokenizers.whitespace(d.name); }, 
    queryTokenizer: Bloodhound.tokenizers.whitespace, 
    limit: 10, 
    prefetch: { 
    url: base_url + 'home/search?q=%QUERY', 
    filter: function(list) { 
     return $.map(list, function(country) { return { name: country }; }); 
    } 
    } 
}); 

countries.initialize(); 

$('.typeahead').typeahead(null, { 
    name: 'countries', 
    displayKey: 'name', 
    source: countries.ttAdapter() 
}); 

CI控制器

public function search(){ 
    $query = $this->home_model->getData(); 
    echo json_encode($query); 
} 

CI型号

private $_cityTable = 'city'; 

public function getData(){ 
    $city = $this->input->get('q'); 
    $query = $this->db->select('city_name')->like('city_name', $city, 'after')->get($this->_cityTable); 
    foreach ($query->result_array as $key) { 
     $array[] = $key['city_name']; 
    } 
    return $array; 
} 

And view

<input type="text" class="typeahead"> 

有人可以帮我解决这个问题吗?

+0

你得到在浏览器控制台的任何错误? –

+0

nope; /如果我在血猎犬中设置本地数组,typeahead工作正常,我认为问题出在控制器或模型中,但我没有任何想法在哪里;/ – user3285285

+0

您的基本URL是本地还是远程?如果它是远程的,我想你需要使用'remote'而不是'prefetch' –

回答

0

当我调试this例如,我发现,传递到过滤器功能的parsedResponse对象具有以下结构:

parsedResponse ={page: x, results:[], total_pages:x, total_results: x}; 

中“x”为整数。

因此让你的代码工作改变你的过滤功能,让你通过结果数组迭代这是列表对象内即

filter: function(list) { 
return $.map(list.results, function(country) { return { name: country }; }); 
}