2014-02-25 2 views
1

CI에서 라이브 검색 기능을 만들려고합니다. 나는 웹 개발에 익숙하지 않고 여전히 학습하고 있습니다. 이 작은 튜토리얼을 어떻게 찾았 는가? http://www.blog.orionwebtech.net/codeigniter-jquery-ajax-live-search/?codekitCB=415037771.748888AJAX 및 CodeIgniter로 라이브 검색 만들기

내 튜토리얼의 코드를 내 앱으로 번역하는 데 문제가있다. 속성이라는 테이블이 있고 입력 값을 슬러그 열과 이름 열에 비교해야합니다. 그런 다음 입력 값이 해당 열 중 하나와 일치하는 라이브 검색 결과에서 슬러그와 이름을 반환하려고합니다. 슬러그에는 숫자 만 들어 있고 이름에는 글자가 들어 있기 때문에 둘 모두와 일치하지 않습니다.

이 코드는 시도해 보았습니다.

보기 :

<div class="something"> 

    <input name="search_data" id="search_data" class="" value="" data-label="Search for a property, a unit, or an resident..." type="text" /> 

    <div id="suggestions"> 

     <div id="suggestionslist"> 

     </div> 

    </div> 

</div> 

자바 스크립트 :

<script type="text/javascript"> 
     function ajaxSearch() { 
      var input_data = $('#search_data').val(); 
      if (input_data.length === 0) { 
       $('#suggestions').hide(); 
      } else { 

       var post_data = { 
        'search_data': input_data, 
        '<?php echo $this->security->get_csrf_token_name(); ?>': '<?php echo $this->security->get_csrf_hash(); ?>' 
       }; 

       $.ajax({ 
        type: "POST", 
        url: "<?php echo base_url(); ?>search/autocomplete", 
        data: post_data, 
        success: function(data) { 
         // return success 
         if (data.length > 0) { 
          $('#suggestions').show(); 
          $('#autoSuggestionsList').addClass('auto_list'); 
          $('#autoSuggestionsList').html(data); 
         } 
        } 
       }); 

      } 
     } 
</script> 

감사관 :

<?php if (! defined('BASEPATH')) exit('No direct script access allowed'); 

class Search extends CI_Controller 
{ 
    public function __construct() 
    { 
     parent::__construct(); 
    } 

    public function autocomplete() 
    { 
     $search_data = $this->input->post('search_data'); 
     $query = $this->Search_model->get_autocomplete($search_data); 

     foreach ($query->result() as $row): 
      echo "<li><a href='" . base_url('association/'.$row->slug) . "'>" . $row->name . "</a></li>"; 
     endforeach; 
    } 
} 
/* End of file search.php */ 
/* File location: application/controllers */ 

모델 :

<?php if (! defined('BASEPATH')) exit('No direct script access allowed'); 

class Search_model extends CI_Model 
{ 
    public function __construct() 
    { 
     $this->load->database(); 
    } 

    public function get_autocomplete($search_data) 
    { 
     $this->db->select('slug, name'); 
     $this->db->like('slug', $search_data); 
     $this->db->like('name', $search_data); 
     return $this->db->get('properties', 10); 
    } 
} 

?> 

테스트했을 때 나는 결과를 얻지 못했습니다. db에 일치하는 행이 있기 때문에 내 테스트 데이터가 유효합니다. 내가 도대체 ​​뭘 잘못하고있는 겁니까?

+0

당신은 당신의 컨트롤러에 Search_model를로드하지 않습니다 onkeyup=ajaxSearch();가 누락되었습니다. Firebug 또는 다른 것을 사용하여 서버 응답을 감시해야합니다. 오류는 다른 것일 수 있습니다. 서비스를 요청할 때 Javascript 콘솔을 살펴보십시오. 그리고 보여줄 결과가 없다면 어떨까요? 오류를 처리하지 않습니다. –

답변

0

귀하의 링크 당로서 당신은 즉

<input name="search_data" id="search_data" class="" value="" data-label="Search for a property, a unit, or an resident..." type="text" onkeyup="ajaxSearch();" />

0
<?php if (! defined('BASEPATH')) exit('No direct script access allowed'); 

class Search_model extends CI_Model 
{ 
    public function __construct() 
    { 
     parent::__construct(); 
    } 

    public function get_autocomplete($search_data) 
    { 
     $this->db->select('slug, name'); 
     $this->db->like('slug', $search_data); 
     $this->db->like('name', $search_data); 
     $query = $this->db->get('properties', 10); 
     return $query->result(); 
    } 
} 

?>