Jquery的:
<script type="text/javascript" src="js/jquery-1.8.0.min.js"></script>
<script type="text/javascript">
function ajaxSearch() {
// alert('hai');
var input_data = $('#search_data').val();
// alert(input_data);
$.ajax({
type: "POST",
url: "search/auto_search",
data1: {search_data:input_data},
success: function(data1) {
alert(data1);
// return success
if (data1.length > 0) {
$('#suggestions').show();
$('#autoSuggestionsList').addClass('auto_list');
$('#autoSuggestionsList').html(data1);
}
}
});
}
</script>
查看:
<div class="something">
<input name="search_data" id="search_data" type="text" onkeyup="ajaxSearch();">
<div id="suggestions">
<div id="autoSuggestionsList"></div>
</div>
</div>
控制器:
public function auto_search() {
$search_data = $this->input->post('search_data');
//echo "aaaaaaaaaaaa".$search_data; die();
// print_r($search_data); die();
$query = $this->search_model->autocomplete($search_data);
// print_r($query); die();
// if (!empty($query)) {
foreach ($query->result() as $row)
echo $row->uid.'</br>' ;
echo $row->name ;
}
...
当我在jquery中警告data1时,结果是整个视图,即视图中给出的代码。这段代码有什么问题?你能解释一下并为这个问题提供解决方案吗?上面给出了Controller,Model和jquery。
答案 0 :(得分:1)
如果我没有错,那么你正在尝试自动完成框。根据我的经验而不是跟随代码使用数组来存储你的数据并将其转换为json然后将该json发送到浏览器然后将该数组填充到自动列表
foreach ($query->result() as $row)
{
echo $row->uid.'</br>' ;
echo $row->name ;
}
而不是上面的代码使用以下代码。
$response = array();
foreach ($query->result() as $row)
{
$response[] = array('uid'=>$row->uid,'name'=>$row->name);
}
echo json_encode($response);
我希望它能帮到你,需要任何帮助然后再通过它。
答案 1 :(得分:0)
某些框架Controller会自动加载要显示的视图文件,也许你需要将其停止。
或尝试添加exit();
public function auto_search() {
//your code
exit();
}
备注:想想ajax retrun json或html,