【问题标题】:return response correctly for jquery autocomplete in Codeigniter在 Codeigniter 中为 jquery 自动完成正确返回响应
【发布时间】:2014-01-24 05:15:38
【问题描述】:

我是 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 函数,但是当我输入输入时,响应包含格式错误的所需结果。感谢您提供的任何帮助!

【问题讨论】:

  • 你的问题不完整还是我的问题?我没有从第二个代码行中看到任何内容。
  • 是的。我按 Tab 键,它过早地发布了。
  • @AgashThamo。一定是你。我个人认为这很清楚,更喜欢更新前的问题...
  • 好吧。感谢您的回复。
  • 我不明白请求“/researchDB/index.php/rdb_con/autoComplete”的返回是否是“每行1个字符”。如果是这样的话,我想我们还需要$this-&gt;rdb_mod-&gt;autoComplete()中的方法代码。

标签: php jquery codeigniter autocomplete


【解决方案1】:

我在 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:据我了解本节,我没有使用内置函数,因此覆盖了自动完成设置的请求变量。

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

感谢所有帮助我的人!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-12-27
    • 1970-01-01
    • 2013-08-19
    • 2016-05-07
    • 2017-10-15
    • 2016-04-30
    • 1970-01-01
    相关资源
    最近更新 更多