2012-05-02 2 views
0

Я пытаюсь реализовать простой сценарий автозаполнения с использованием jQuery UI и CodeIgniter 2, но моя модель продолжает сообщать мне, что существует неопределенная переменная, поэтому я не знаю, правильна ли моя настройка.jQuery UI Autocomplete и CodeIgniter

мой взгляд

$(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); 
} 

My Model

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; 
} 

Там Арент любые ошибки, кроме него, не кажется, не передавая $ термин переменной в модель.

+0

Ваш метод модели «getAutocomplete» не имеет параметра «$ term». – mbh

+0

Вы знаете, что автозаполнение jquery имеет встроенную поддержку удаленных источников данных? Не нужно изобретать велосипед с помощью собственного запроса AJAX. –

ответ

3

Да, я думаю, что вам нужно getAutocomplete(), чтобы иметь парам "$ TERM":

function getAutocomplete($term) { 
+0

Я попытался добавить это, но тогда запрос возвращает ВСЕ записи, поэтому я не думаю, что значение передается от моего контроллера к модели. Я вижу, что он передается из представления в контроллер. – puks1978

+0

Можете ли вы проверить значение $ term внутри getAutocomplete()? Просто выполните print_r ($ term); до строки $ this-> db-> like, и посмотреть, что это за значение. Запрос обязательно вернет все результаты, если $ term будет пустым. – continuum

0

изменения после значения в Ajax

$(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)); 
} 
Смежные вопросы