Php jquery使用json自动完成多个
我正在处理jquerymultipleautocomplete,然而,当我键入一些内容时,所有的项目都会被发布,而不是匹配的项目。我的Javascript是Php jquery使用json自动完成多个,php,jquery,json,autocomplete,jquery-autocomplete,Php,Jquery,Json,Autocomplete,Jquery Autocomplete,我正在处理jquerymultipleautocomplete,然而,当我键入一些内容时,所有的项目都会被发布,而不是匹配的项目。我的Javascript是 $('.tags').bind("keydown", function(event) { if (event.keyCode === $.ui.keyCode.TAB && $(this).data("autocomplete").menu.active) { event.preventDefault();
$('.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;
}
});
而公共_模型具有此功能
Public function getaddressbook() {
$this -> load -> model('common_model');
$data = $this -> common_model -> addressbook();
echo json_encode($data);
}
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;
}
}
公共函数通讯簿()
{
$this->db->select('emailid');
$this->db->where('emailid','');
$result=$this->db->get('addressbook');
如果($result->num_rows()>0)
{
foreach($result->result()作为$row)
{
$data[]=$row->emailid;
}
返回($数据);
}
其他的
{
返回FALSE;
}
}
您没有在控制器中的任何位置传递术语
当然,使用该术语来查询数据库,例如:
$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;
}
}
公共函数getaddressbook(){
$this->load->model('common_model');
$term=$this->input->get('term');
$data=$this->common_model->addressbook($term);
echo json_编码($data);
}
公共功能通讯录($term)
{
$this->db->select('emailid');
$this->db->where('emailid','');
$this->db->like('column\u name',$term);
$result=$this->db->get('addressbook');
如果($result->num_rows()>0)
{
foreach($result->result()作为$row)
{
$data[]=$row->emailid;
}
返回($数据);
}
其他的
{
返回FALSE;
}
}
问题似乎出在getaddressbook.php逻辑中。你能分享一些代码吗?对不起,Adunahay,我已经编辑了我的问题并把代码放进去了…没问题。我认为mallix的答案是正确的!如果其post使用:$this input->post('term');否则使用$this->input->get('term')。取决于您的自动完成js。您的代码表示一个get方法,请参见$.getJSONHey感谢Mallix,它的工作方式很有魅力。:)但是,我现在无法获得多重自动完成:(不确定我会错在哪里。这是我猜的另一个问题。我猜这是一个问题。value=terms.join(“;”),因为我放了一个“,”,它工作得很好。哦,是的,我做了!但是请mallix帮我再做一件事,我如何让它使用分号而不是逗号。