jquery自动完成不会给任何结果

jquery自动完成不会给任何结果

问题描述:

我是codeignitor的新手,试图从数据库中获取jquery autocomplete。已经有很多关于这个话题的问题,但没有一个帮助我。jquery自动完成不会给任何结果

这里是视图文件我的脚本功能

查看

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.js"> 
</script> 
<link href="https://cdnjs.cloudflare.com/ajax/libs/select2/4.0.3/css/select2.min.css" rel="stylesheet" /> 
<script src="https://cdnjs.cloudflare.com/ajax/libs/select2/4.0.3/js/select2.min.js"> 
</script> 
<link rel="stylesheet" href="//code.jquery.com/ui/1.12.1/themes/base/jquery- 
ui.css" /> 
<script src="https://ajax.aspnetcdn.com/ajax/jQuery/jquery-3.2.1.min.js"> 
</script> 
<script src="https://code.jquery.com/jquery-1.12.4.js"></script> 
<script src="https://code.jquery.com/ui/1.12.1/jquery-ui.js"></script> 



<script type="text/javascript"> 
    $(function() { 
     $("#vname").autocomplete({ 
    source: function(request, response) { 

     $.ajax({ 
     url: "vendor/search", 
     data: { term: $("#vname").val()}, 
     dataType: "json", 
     type: "GET", 
     success: function(data){ 
      var resp = $.map(data,function(obj){ 
       return obj.tag; 
      }); 

      response(resp); 
     } 
    }); 
}, 
minLength: 2 
    }); 
    }); 
    </script> 
    </head> 
    . 
    . 
    . 
    . 
    <input type="text" class="form-control" name="vendor_name" id="vname" /> 

这里控制器(供应商)函数(搜索),从中我试图从数据库

获得建议的阵列

控制器

public function search() 
{ 

$json = []; 

    $this->load->database(); 
    if(!empty($this->input->get("term"))){ 
     $this->db->like('name', $this->input->get("term")); 
     $query = $this->db->select('id,name as text') 
        ->limit(10) 
        ->get("vendors"); 
     $json = $query->result(); 
    } 
    echo json_encode($json);   
} 

问题是,当我输入字段时,什么都没有发生(没有自动完成出现),但我的供应商/搜索功能正常工作,而直接访问它并传递一些东西作为参数。我认为$_GET[term]总是空的或什么的。

我没有任何想法现在应该做什么,任何建议将是可观的。

+0

相反,如果get()可能试图控制器上的post()和ajax类型:“POST”, – user4419336

+1

我已经试过了。没有工作 – Whoosis

+1

尝试从Ajax请求中删除''dataType:“json”,''请求 –

变化控制器

public function search(){ 
    $json = []; 
    $this->load->database(); 
    if(!empty($this->input->get("term"))){ 
     $this->db->like('name', $this->input->get("term")); 
     $query = $this->db->select('id,name as text') 
        ->limit(10) 
        ->get("vendors"); 
     $json = $query->result(); 
    } 
    //set page header 
    $this->output 
     ->set_content_type('application/json') 
     ->set_output(json_encode($json)); 
} 

取代script标签

<script type="text/javascript"> 
$(function() { 
    $("#vname").autocomplete({ 
    source: function(request, response) { 
     $.ajax({ 
     url: "<?=base_url(); ?>vendor/search?term="+request.term, 
     dataType: "json", 
     type: "GET", 
     success: function(data){ 
      response($.map(data, function (value, key) { 
      return { 
       label: value.text, 
       value: value.id 
      } 
      })); 
     } 
     }); 
    }, 
    minLength: 2, 
    select: function(event, ui) { 
     //select event of autocomplete 
     console.log("id : ",ui.item.value); 
     console.log("text : ",ui.item.label); 
     $('#vname').val(ui.item.label); 
     return false; 
    }, 
    }); 
}); 
</script> 

改变这一行:

url: "vendor/search", 

到:

url: "<?php echo base_url('vendor/search'); ?>",