Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/288.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 在Codeigniter中正确返回jquery自动完成的响应_Php_Jquery_Codeigniter_Autocomplete - Fatal编程技术网

Php 在Codeigniter中正确返回jquery自动完成的响应

Php 在Codeigniter中正确返回jquery自动完成的响应,php,jquery,codeigniter,autocomplete,Php,Jquery,Codeigniter,Autocomplete,我是jquery新手,在自动完成功能方面遇到了问题。编辑:我应该提到我正在使用带有Codeigniter的MVC。我的AJAX响应返回如下[{“客户名称”:“Adecco管理与咨询公司”}]。它也不是一行,而是下拉列表中的每个字符,如下所示 [ { " c u s t 等等。这是我的自动完成脚本 $('#cust_name').autocomplete({ source: function(request,response){ var request = {

我是jquery新手,在自动完成功能方面遇到了问题。编辑:我应该提到我正在使用带有Codeigniter的MVC。我的AJAX响应返回如下
[{“客户名称”:“Adecco管理与咨询公司”}]
。它也不是一行,而是下拉列表中的每个字符,如下所示

[
{
"
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函数,但当我键入输入时,响应以错误的格式包含了所需的结果。谢谢你能给我的帮助

我收到了SO之外的答案,想在这里为其他人发布解决方案

控制器:我需要将结果放入一个数组中,并将其作为一个对象传递给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:就我对本节的理解而言,我没有使用内置函数,因此覆盖了autocomplete设置的请求变量

$('#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);
                }
            });
    }
    });
型号:变化不大。我添加了distinct以限制dup值

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();
    }

感谢所有帮助过我的人

你的问题不完整还是我的问题?我从第二行代码中看不到任何东西。是的。我按了一下tab enter键,它就提前发布了。@AgashThamo。一定是你。我个人认为这是非常清楚的,我更喜欢更新之前的问题…好吧。感谢您的回复。我不明白请求的返回“/researchDB/index.php/rdb_con/autoComplete”是否为“每行1个字符”。如果是这种情况,我想我们还需要
$this->rdb_mod->autoComplete()
中方法的代码。