我有一个表单,用户可以在其中输入视频游戏的名称。我要做的是在名称和 ID 均为“gameTitle”的字段中设置自动完成功能。自动完成是从名为“aararity”的数据库表中提取名为“title”的字段。
我使用这个博客上的指南作为我的范例。
首先,我知道要使自动完成功能起作用,您需config/config.php
要这样做,我会这样做:
$config['csrf_protection'] = FALSE;
在我看来,我有:
$(document).ready(function() {
$(function() {
$( "#gameTitle" ).autocomplete({ // the field I want to autocomplete is called gameTitle
source: function(request, response) {
$.ajax({ url: "",
data: { term: $("#gameTitle").val()},
dataType: "json",
type: "POST",
success: function(data){
response(data);
}
});
},
minLength: 2
});
});
});
这是我的控制器中的“建议”功能($row->title 中提到的“标题”是指我试图从中提取的数据库表中的“标题”字段):
function suggestions()
{
$this->load->model('usergames_model');
$term = $this->input->post('term',TRUE);
if (strlen($term) < 2) break;
$rows = $this->autocomplete_model->GetAutocomplete(array('keyword' => $term));
$json_array = array();
foreach ($rows as $row)
array_push($json_array, $row->title);
echo json_encode($json_array);
}
现在,这是我添加到模型中的内容:
function GetAutocomplete($options = array())
{
$this->db->select('title');
$this->db->like('title', $options['keyword'], 'after');
$query = $this->db->get('aararity');
return $query->result();
}
基本上,当我运行表单时,没有任何自动完成功能。我认为$options[keyword]
参数可能是问题所在;我几乎从上述博客中复制了它,我猜这可能是作者使用的模糊占位符。
我错过了什么?