使用codeigniter在jquery自动完成中面临问题

时间:2013-12-17 10:01:50

标签: jquery codeigniter autocomplete

我在使用Codeigniter进行Jquery自动完成时遇到问题。当我使用自动填充数据时,它会出现,但它不可见。

查看

<script>
$(function () {
    $('#suggest_product').autocomplete({
        source: '<?php echo site_url("cart/suggest_products"); ?>',
        select: function (event, ui) {
        },
        success: function (resp) {
            alert("auto");
            console.log(resp);
        },
        error: function () {
            alert("Oops, that didn't work. Please try again.");
        }
    });
    $.fn.extend({
        propAttr: $.fn.prop || $.fn.attr
    });
});
</script>

控制器

function suggest_products(){
        print_r($this->Product_model->suggest_products($_REQUEST['term']));
    }

模型

function suggest_products($term){
        $data   = array();
        $term   = strtolower( addslashes( trim( urldecode($term) ) ) );
        $this->db->select('name');
        $this->db->like('name',$term);
        $this->db->or_like('sku', $term);
        $this->db->limit(1);
        $temp   =   $this->db->get('products')->result_array();
        $data   = json_encode($temp);
        return $data;
    }

在firebug中看到数据即将到来。此外,ul,li正在变为但<li><a></a></li>为空。

请帮忙

1 个答案:

答案 0 :(得分:0)

jQuery UI将数据自动填充为以下格式之一:

  • 字符串数组
  • 一个对象数组,每个对象都需要label和/或value属性

所以这个:

[{"name":"BLOCKS GREY BIG PILLOW"}]

应该在服务器端代码中更改为以下之一:

["BLOCKS GREY BIG PILLOW"]
[{"label":"BLOCKS GREY BIG PILLOW"}]

最简单的解决方法可能是改变这一行:

$this->db->select('name AS `label`', FALSE);