Autocomplete from selected data in combobox : jquery.min.js:2 Uncaught TypeError: Cannot use 'in' operator to search for 'length' in

Autocomplete from selected data in combobox : jquery.min.js:2 Uncaught TypeError: Cannot use 'in' operator to search for 'length' in

我正在尝试为我的表单制作自动完成功能,数据来自选定的组合框。

这是我的控制器:

public function cari(){
    $kode_list=$this->request->getVar('list_produksi_toko');
    //$kode_list=$_GET['kode_list'];
    $cari['hasil'] =$this->produksiModel->mencari($kode_list);
    echo json_encode($cari);
} 

型号:

public function mencari($keyword)
{
    //$query= $this->builder()->getWhere('list_produksi_toko',array('kode_list'=>$id));
    $query = $this->groupBy('kode_list')->like('kode_list', $keyword)->findAll();
    return $query;
}
在我看来

和 javascript :

<script>

          $('#produk').change(function(){
            var list_produksi_toko = $(this).val();

            
            $.ajax({
             url:"/Produksi/cari",
             method: 'post',
             data:{list_produksi_toko: list_produksi_toko},
             success:function(data){
              jQuery.parseJSON(data);
               // var ddas = data.buyer
                alert (data);
                $.each(data, function(key, val){ 
                $('#buyer').val('<value="'+data['buyer']+'">');
                 // document.getElementById('nama_barang').value=val.nama_barang;
                 // document.getElementById('jenis_kain').value=val.jenis_kain;
                 // document.getElementById('warna').value=val.warna;
                 // document.getElementById('pcs').value=val.pcs;
               });
              }
            })
          });
          //   $.ajax({
          //     url: '/ProduksiModel/getProduksi',
          //     data:"produk="+produk ,
          //   }).success(function (data) {
          //     var json = data,
          //     obj = JSON.parse(json);
          //     $('#buyer').val(obj.nama);
          //     $('#status_order').val(obj.status_order);
          //     $('#nama_barang').val(obj.nama_barang);
          //     $('#jenis_kain').val(obj.jenis_kain);
          //     $('#warna').val(obj.warna);
          //     $('#pcs').val(obj.pcs);
          //   });
          // }
        </script>

我在向每个表单显示每个数据时遇到问题,此代码在控制台中显示如下错误:

Uncaught TypeError: Cannot use 'in' operator to search for 'length' in {"hasil":[{"kode_list":"LPT20060001","tanggal":"2020-06-08","status_order":"Full order","buyer":"IK001,Ik Collection","nama_barang":"IK05900,Renata Blouse","jenis_kain":"Mosscreep","warna":"IK05910,Grey","pcs":"63","tanggal_input":"2020-06-18","user":"Dena","keterangan":"Cutting Done"}]}

我已经尝试提醒数据,它显示: {"hasil":[{"kode_list":"LPT20060001","tanggal":"2020-06-08","status_order":"全订单","买家":"IK001 ,Ik Collection","nama_barang":"IK05900,Renata Blouse","jenis_kain":"Mosscreep","warna":"IK05910,Grey","pcs":"63", "tanggal_input":"2020-06-18","user":"Dena","keterangan":"切割完成"}]}

我该如何解决?

您可能需要更改 data 的变量类型以循环遍历它。您可以通过 console.log(typeof data) 检查变量的类型。以下是您问题的可能解决方案,看看是否对您有帮助。

success:function(data){
    
    console.log(typeof data);  // should be string
    
    data = jQuery.parseJSON(data);
    
    console.log(typeof data); // should be object
   
    $.each(data['hasil'], function(key, val){ 
        
         $.each(val, function(subkey, subval){
             
            console.log(subkey);
            console.log(subval);
    
            // all values are assigned to the elements with the same id as their keys(as your code suggests)
            $('#' + subkey).val('<value="' + subval + '">');
        });
    });
}