jQuery UI自动完成和CodeIgniter

时间:2012-05-02 22:04:10

标签: php jquery codeigniter

我正在尝试使用jQuery UI和CodeIgniter 2实现一个简单的自动完成脚本,但我的模型一直告诉我有一个未定义的变量,所以我不知道我的设置是否正确。

我的观点

$(function() {
   $("#txtUserSuburb").autocomplete({
      source: function(request, response){
         $.ajax({ 
            url: "autocomplete/suggestions",
            data: { 
               term: $("#txtUserSuburb").val()
            },
            dataType: "json",
            type: "POST",
            success: function(data){
               response(data);
            }
         });
      },
      minLength: 2
   });
});

我的控制器

function suggestions(){
   $this->load->model('autocomplete_model');
   $term = $this->input->post('term', TRUE);
   $rows = $this->autocomplete_model->getAutocomplete($term);
   echo json_encode($rows);
}

我的模特

function getAutocomplete() {
   $this->db->like('postcode', $term, 'after'); 
   $query = $this->db->get('tbl_postcode');
   $keywords = array();
   foreach($query->result() as $row){
      array_push($keywords, $row->postcode);
   }        
   return $keywords;
}

没有任何错误,除了它似乎没有将$ term变量传递给模型。

2 个答案:

答案 0 :(得分:3)

是的,我认为你需要getAutocomplete()才能有一个参数“$ term”:

function getAutocomplete($term) {

答案 1 :(得分:0)

更改Ajax中的post值

$(function() {
  $("#txtUserSuburb").autocomplete({
      source: function(request, response){
         $.ajax({ 
            url: "autocomplete/suggestions",
            data: { 
               term: request.term //change post value
            },
            dataType: "json",
            type: "POST",
            success: function(data){
               response(data);
            }
         });
      },
      minLength: 2
   });
});

在控制器中将页眉设置为JSON

function suggestions(){
   $this->load->model('autocomplete_model');
   $term = $this->input->post('term', TRUE);
   $rows = $this->autocomplete_model->getAutocomplete($term);
   $this->output
        ->set_content_type('application/json')
        ->set_output(json_encode($rows));
}