我是jquery的新手,我遇到了自动完成功能的问题。编辑:我应该提到我正在使用带有Codeigniter的MVC。我的AJAX响应像这样[{"customer_name":"Adecco Management & Consulting S.A."}]
返回。它也不是连续的下拉列表中的每个字符都像这样
[
{
"
c
u
s
t
等等。这是我的自动完成脚本。
$('#cust_name').autocomplete({
source: function(request,response){
var request = {
toSearch: $('#cust_name').val()
};
$.ajax({
url: '/researchDB/index.php/rdb_con/autoComplete',
data: request,
datatype:"json",
type: 'POST',
success: function(data){
response(data);
}
});
}
});
和我的控制员:
function autoComplete(){
$data['id'] = $this->rdb_mod->autoComplete();
echo json_encode($data['id']);
}
模型:
public function autoComplete(){
$toSearch = $_POST['toSearch'];
$this->db->select('customer_name');
$this->db->like('customer_name', $toSearch, 'after');
$query = $this->db->get('research');
return $query->result();
}
在视图中输入:
<input data-input-type="cust_name" id="cust_name" class="ids form-control search-query " type="text" name="customer_name">
我不确定我是否正确设置了jquery函数,但是当我输入输入时,响应包含了错误格式的所需结果。感谢您提供任何帮助!
答案 0 :(得分:0)
我在SO之外收到了答案,并希望将此解决方案发布给其他人。
controller:我需要将结果放入一个数组中,并将其作为一个对象传递给ajax响应。
function autoComplete(){
$data['id'] = $this->rdb_mod->autoComplete();
$results = array();
foreach($data['id'] as $row){
$results[]=$row->customer_name;
}
echo json_encode($results);
}
jquery:据我所知,我没有使用内置函数,因此覆盖了自动完成设置的请求变量。
$('#cust_name').autocomplete({
source: function(request,response){
$.ajax({
url: '/researchDB/index.php/rdb_con/autoComplete',
data: request,
datatype:"json",
type: 'POST',
success: function(data){
var items = JSON.parse(data);
response(items);
}
});
}
});
模特:变化不大。我添加了不同的限制重复值。
public function autoComplete(){
$toSearch = $_POST['term'];
$this->db->distinct();
$this->db->select('customer_name');
$this->db->like('customer_name', $toSearch, 'after');
$query = $this->db->get('research');
return $query->result();
}
感谢所有帮助过我的人!