【问题标题】:fail to make autocomplete codeigniter无法使自动完成代码点火器
【发布时间】:2020-01-01 12:19:28
【问题描述】:

我正在尝试创建一个销售点 (POS),但在我的 Codeigniter 中使用 ajax 进行自动完成时遇到问题,自动完成列表不会出现,我希望在输入代码产品、名称和价格时自动填充如何解决这个问题

型号

   public function get_code($title)
    {
      $this->db->like('code_product', $title, 'BOTH');
      $this->db->order_by('id', 'asc');
      $this->db->limit(10);
      return $this->db->get('merchandise')->result();
    }

控制器

   function get_autocomplete()
  {
    if (isset($_GET['term'])) {
      $result = $this->Barang_model->get_code($_GET['term']);
      if (count($result) > 0) {
        foreach ($result as $row)
        $result_array[] = array(
            'codeproduct'=>$row->code_product,
            'name'=>strtoupper($row->name),
            'price'=>strtoupper($row->price)
          );
        echo json_encode($result_array);
      }
    }
  }

查看

        <td>
                  <input type="text" name='cp' id="cp" placeholder='Code Product' class="form-control" />
                </td>
                <td>
                  <input type="text" name='name' id="name" placeholder='Name' class="form-control" />
                </td>
                 <td>
                  <input  type="text" name='price' id="price" placeholder='Price' class="form-control" />
                </td>

    $(document).ready(function()
      {
        $("#cp").autocomplete({
          source : "<?php echo base_url('Barang/get_autocomplete') ?>",

          select: function(event, ui){
            $('[name="cp"]').val(ui.item.codeproduct);
            $('[name="name"]').val(ui.item.name);
            $('[name="price"]').val(ui.item.price);

          }
        });

【问题讨论】:

  • foreach 循环之外执行echo
  • 试试这个code

标签: php jquery codeigniter


【解决方案1】:

我不知道你所有的控制器文件。但是您没有 __construct 方法和加载模型。首先尝试添加加载模型方法或__construct和加载模型方法

例子:

public function __construct()
{
  $this->load->model('your_model_method_name');
}

 function get_autocomplete()
  {
    if (isset($_GET['term'])) {
      $this->load->model('barang_model');
      $result = $this->Barang_model->get_code($_GET['term']);
      if (count($result) > 0) {
        foreach ($result as $row)
        $result_array[] = array(
            'codeproduct'=>$row->code_product,
            'name'=>strtoupper($row->name),
            'price'=>strtoupper($row->price)
          );
        echo json_encode($result_array);
      }
    }
  }

并且您的参数是字符串或整数。你应该转数组

像这样:

$parameter =array('column_name' => $_GET['term']);
$result = $this->Barang_model->get_code($parameter);

干得好:)

【讨论】:

    【解决方案2】:

    终于,我可以解决这个问题,但我仍然对它是如何发生的感到困惑,我只是稍微改变一下

    来自

    的控制器
     function get_autocomplete()
      {
        if (isset($_GET['term'])) {
          $result = $this->Barang_model->get_code($_GET['term']);
          if (count($result) > 0) {
            foreach ($result as $row)
            $result_array[] = array(
                'codeproduct'=>$row->code_product,
                'name'=>strtoupper($row->name),
                'price'=>strtoupper($row->price)
              );
            echo json_encode($result_array);
          }
        }
      }
    

    public function __construct()
        {
            parent::__construct();
            is_logged_in();
            $this->load->model('Barang_model');
        }
    
        function get_autocomplete()
            {
                if (isset($_GET['term'])) {
                    $result = $this->Barang_model->get_code($_GET['term']);
                    if (count($result) > 0) {
                        foreach ($result as $row)
                            $arr_result[] = array(
                                'label'  => $row->code_product,
                                'name'   => $row->name,
                                'price'  => $row->price,
                         );
                            echo json_encode($arr_result);
                    }
                }
            }
    

    查看来源

      <td>
                  <input type="text" name='cp' id="cp" placeholder='Code Product' class="form-control" />
                </td>
                <td>
                  <input type="text" name='name' id="name" placeholder='Name' class="form-control" />
                </td>
                 <td>
                  <input  type="text" name='price' id="price" placeholder='Price' class="form-control" />
                </td>
    
    $(document).ready(function()
      {
        $("#cp").autocomplete({
          source : "<?php echo base_url('Barang/get_autocomplete') ?>",
    
          select: function(event, ui){
            $('[name="cp"]').val(ui.item.codeproduct);
            $('[name="name"]').val(ui.item.name);
            $('[name="price"]').val(ui.item.price);
    
          }
        });
    

      <td>
                  <input type="text" name='cp' id="cp" placeholder='Code Product' class="form-control" />
                </td>
                <td>
                  <input type="text" name='name' id="name" placeholder='Name' class="form-control" />
                </td>
                 <td>
                  <input  type="text" name='price' id="price" placeholder='Price' class="form-control" />
                </td>
         $(document).ready(function()
          {
            $("#cp").autocomplete({
              source : "<?php echo site_url('Barang/get_autocomplete') ?>",
    
              select: function(event, ui){
                $('[name="cp"]').val(ui.item.label);
                $('[name="name"]').val(ui.item.name);
                $('[name="price"]').val(ui.item.price);
    
              }
            });
        });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-01-09
      • 2015-08-01
      • 1970-01-01
      • 2012-03-08
      • 2019-07-17
      • 2017-01-20
      • 2014-07-22
      相关资源
      最近更新 更多