0

jqueryの複数のオートコンプリートに取り組んでいますが、何かを入力している間、一致するアイテムではなく、すべてのアイテムが公開されます。私のJavascriptは

$('.tags').bind("keydown", function(event) {
if (event.keyCode === $.ui.keyCode.TAB && $(this).data("autocomplete").menu.active) {
    event.preventDefault();
    }
}).autocomplete({
    source : function(request, response) {
        $.getJSON($.cookie('base_url') + "js/getaddressbook.php", {
            term : extractLast(request.term)
        }, response);
    },
    search : function() {
        var term = extractLast(this.value);
        if (term.length < 2) {
            return false;
        }
    },

    focus : function() {
        return false;
    },
    select : function(event, ui) {
        var terms = split(this.value);
        terms.pop();
        terms.push(ui.item.value);
        terms.push("");
        this.value = terms.join("; ");
        return false;
    }
});

js/getaddressbook.phpは

["gunjan.soni"、 "askhr"、 "saurabh.burman"、 "Aditi.Nehra"、 "ithelpdesk"、 "shipra.kwatra"、 "gagandeep.manchanda"]

どこが間違っているのかわからない。

以下はそれがどのように見えるかのスナップショットです

http://i.stack.imgur.com/SmRjX.png

助けてください!

私のJSコントローラーには機能があります

Public function getaddressbook() {
        $this -> load -> model('common_model');
        $data = $this -> common_model -> addressbook();
        echo json_encode($data);
    }

そしてcommon_modelは関数を持っています

Public function addressbook()
    {
        $this -> db -> select('emailid');
        $this -> db ->where('emailid <>','');
        $result = $this -> db -> get('addressbook');
        if ($result -> num_rows() > 0)
        {
            foreach ($result->result() as $row)
            {
                $data[] = $row -> emailid;
            }
            return ($data);
        }
        else
        {
            return FALSE;
        }
    }
4

1 に答える 1

2

コントローラのどこにも 用語を渡していない。

そしてもちろん、その用語を使用してデータベースにクエリを実行します。たとえば、次のようになります。

$this->db->like('column_name', $term);  

コードの場合、次のようになります。

Public function getaddressbook() {
        $this -> load -> model('common_model');
        $term = $this->input->get('term');
        $data = $this->common_model->addressbook($term);
        echo json_encode($data);
    }

Public function addressbook($term)
    {
        $this -> db -> select('emailid');
        $this -> db ->where('emailid <>','');
        $this->db->like('column_name', $term);
        $result = $this -> db -> get('addressbook');
        if ($result -> num_rows() > 0)
        {
            foreach ($result->result() as $row)
            {
                $data[] = $row -> emailid;
            }
            return ($data);
        }
        else
        {
            return FALSE;
        }
    }
于 2013-01-22T20:15:28.437 に答える