2013-01-12 40 views
0

为什么列表自动更新为我输入?不管我输入的清单是一样的。codeigniter jquery自动完成

我希望能够键入“wj”,它只会列出以“wj”开头的项目。

JS

$(function() 
{ 
    $("#part_num_id").autocomplete({ 

     source: "partnum/get" 

    }); 
}); 

控制器

public function get() 
{ 

    $q = $this->input->post('term', TRUE); 

    $this->load->model('partnum_model'); 
    $this->partnum_model->get_partnum2($q); 
} 

型号

function get_partnum2($q) 
    { 
    $this->db->select('*'); 
    $this->db->like('part_num', $q); 
    $query = $this->db->get('item_history'); 

    if($query->num_rows > 0) 
    { 
     foreach ($query->result_array() as $row) 
     { 
     $new_row['label']=htmlentities(stripslashes($row['part_num'])); 
     $new_row['value']=htmlentities(stripslashes($row['id'])); 
     $row_set[] = $new_row; //build an array 
     } 

     echo json_encode($row_set); 
    } 
    } 
+0

你的查询结果是什么样子?似乎这是这里的问题。 –

+1

而不是'$ this-> db-> like('part_num',$ q);''你试过了'$ this-> db-> like'''''''';'? – user1190992

+0

@ user1190992 - 是的,谢谢你,圣球谢谢你。这固定了它。但方式?在查询中使用'之后'我从未见过。 –

回答

0

我可能是错的,因为我还没有彻底测试此, 但我相信自动完成发送GET请求,而不是POST请求。 因此

$q = $this->input->post('term', TRUE); 

不会给您带来任何;相反,你应该写

$q = $this->input->get('term', TRUE); 
+0

两种方式的工作方式相同,查询运行并显示所有内容,无论输入的字母是什么。 –

+0

我的错误。如果是这样,你能告诉我们该程序工作多远吗?通过“多远”,我的意思是:你在$ q中获得正确的术语吗? =>您的模型是否调用了所需的SQL查询? => SQL查询的原始结果是你想要的吗? =>您的程序是否将所需的JSON返回给您的JavaScript? – ashiina

+0

user1190992找到了答案。 –