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에 일치하는 행이 있기 때문에 내 테스트 데이터가 유효합니다. 내가 도대체 뭘 잘못하고있는 겁니까?
당신은 당신의 컨트롤러에 Search_model를로드하지 않습니다
onkeyup=ajaxSearch();
가 누락되었습니다. Firebug 또는 다른 것을 사용하여 서버 응답을 감시해야합니다. 오류는 다른 것일 수 있습니다. 서비스를 요청할 때 Javascript 콘솔을 살펴보십시오. 그리고 보여줄 결과가 없다면 어떨까요? 오류를 처리하지 않습니다. –