我試圖創建CI實時搜索功能(這是我從來沒有做過),生活搜索。我對網絡開發很陌生,現在仍在學習。我發現瞭如何做到這一點http://www.blog.orionwebtech.net/codeigniter-jquery-ajax-live-search/?codekitCB=415037771.748888創建具有AJAX和笨
我有翻譯從該教程我的應用程序的代碼問題,這個小教程。我有一個名爲屬性的表,我希望將輸入值與slug列和名稱列進行比較。然後我希望它在實時搜索結果中返回slug和名稱,其中輸入值與這些列中的任何一個匹配。它不會匹配,因爲slu contains只包含數字而名稱包含字母。
這是我想出了嘗試做到這一點的代碼。
的觀點:
<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>
中的JavaScript:
<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。你應該使用Firebug或其他東西來觀察你的服務器響應。錯誤可能是別的。當你打電話給你的服務 看看你的Javascript控制檯。如果你沒有結果顯示呢?你不會處理錯誤。 –