【问题标题】:Jquery autocomplete wont give any resultJquery自动完成不会给出任何结果
【发布时间】:2017-08-02 09:13:16
【问题描述】:

我是 codeignitor 的新手,并试图从数据库中获取 jquery autocomplete。已经有很多关于这个主题的问题被问到,但没有一个对我有帮助。

这是我的视图文件中的脚本函数

查看

<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] 总是空的什么的。

我不知道现在该做什么,任何建议都会很有意义。

【问题讨论】:

  • 相反,如果 get() 可以在控制器和 ajax 上尝试 post() 类型:“POST”,
  • 我已经试过了。没用
  • 尝试从 Ajax 请求中删除 dataType: "json",
  • 你在ajax响应中得到json了吗?
  • @ankitsuthar 我已经编辑了我的问题。

标签: php jquery codeigniter autocomplete


【解决方案1】:

改变这一行:

url: "vendor/search",

到:

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

【讨论】:

    【解决方案2】:

    控制器的变化

    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 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>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-01-04
      • 1970-01-01
      • 2023-03-18
      • 1970-01-01
      • 2012-05-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多