0

我正在尝试使用 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 变量传递给模型之外,没有任何错误。

4

2 回答 2

3

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

function getAutocomplete($term) {
于 2012-05-02T22:13:31.167 回答
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));
}
于 2017-07-19T05:07:37.560 回答