Jquery Ajax自动完成与codeigniter'term'问题

时间:2013-10-29 16:13:48

标签: jquery codeigniter autocomplete

我的ajax 自动填充功能确实从服务器返回国家/地区它始终显示所有国家/地区无论我输入什么。将request.term发送到控制器到Model有什么问题,但我无法弄清楚它是什么。非常感谢任何提示!

HTML:

<input type='text' name='location_search' id='location_search' placeholder='Type Location' >

JS:

$(function(){
    var $sfield = $('#location_search').autocomplete({
        source: function(request, response){
            var url = "<?php echo site_url('autocomplete/control_areas'); ?>";
              $.post(url, {data:request.term}, function(data){
                response($.map(data, function(countries) {
                    return {
                        value: countries.name_en
                    };
                }));
              }, "json");  
        },
        minLength: 2,
        autofocus: true
    });
});

控制器:

function control_areas(){
    $this->load->model('autocomplete_model');
    $term = $this->input->get('term', TRUE);
    $countries = $this->autocomplete_model->get_areas($term);
    echo json_encode($countries);
}

模型:

function get_areas($term){
    $this->db->where('name_en', $term);
    $query = $this->db->get('countries');
    return $query->result(); 
}

2 个答案:

答案 0 :(得分:3)

问题在于你的模型,它应该是这样的:

function get_areas($term){
    $this->db->like('name_en', $term, 'after');
    $query = $this->db->get('countries');
    return $query->result(); 
}

答案 1 :(得分:1)

简单的小事:

$this->db->like

而不是

$this->db->where