ajax代码没有将数据从表转到第二行

时间:2016-12-29 07:35:00

标签: javascript php ajax

大家好我在ajax上有问题。其中ajax无法获取第二行的数据。

这是模型中的代码

 function getdtbarang($barcode = FALSE) {
         if ($barcode === FALSE)
        {
                $query = $this->db1->get('tblmstbarang');
                return $query->result_array();
        }

        $query = $this->db1->get_where('tblmstbarang', array('barcode' => $barcode));
        return $query->row_array();
        }

这是控制器中的代码:

 function getdatabarang() {
        $barcode = $this->input->post('barcode');
        $data=$this->Mbarang->getdtbarang($barcode);
        echo json_encode($data);
        }

这是视图中的ajax代码。注意:某些代码已更新

     <script type="text/javascript">

   function getdatabrg(barcode){
    $('#barcode_2').each(function() {    
        var barcode =$('#barcode_2').val();   
       $.ajax({
            type    : "post",
            data    : "barcode=" +barcode,                       
            url     : "<?php echo base_url();?>index.php/master/barang/Cbarang/getdatabarang",
            dataType:"json",
            success: function(data){ 
            for(var i in data)
              {
            var obj= data[i];          


                $("#barang_nama_2").val(obj.barang_nama);
                $("#harga_beli_2").val(obj.harga_beli);

          }}

        }); 


    });
}


    $(document).ready(function() { 
     $('#barcode_2').keyup(function() {
      getdatabrg(); 
    });
  });
      </script>
    <td><input type="text" class="form-control" id="barcode"    name="barcode[]"     value="<?php echo set_value('barcode['.$i.']') ;?>" onKeyUp="getValues()" ></td>
    <td><input type="text" class="form-control" id="barang_nama" name="barang_nama[]" value="<?php echo set_value('barang_nama['.$i.']') ;?>" onKeyUp="getValues()"  disabled></td>
    <td><input type="text" class="form-control" id="harga_beli"  name="harga_beli[]"  value="<?php echo set_value('harga_beli['.$i.']');?>" onKeyUp="getValues()" disabled></td>

    <td><input type="text" class="form-control" id="barcode_2"        name="barcode[]"     value="<?php $a=set_value('barcode[0]') ; echo $a;?>"></td>
    <td><input type="text" class="form-control" id="barang_nama_2"    name="barang_nama[]" value="<?php $a=set_value('barang_nama[0]') ; echo $a;?>" onKeyUp="getValues()" readonly></td>
    <td><input type="text" class="form-control" id="harga_beli_2"     name="harga_beli[]"  value="<?php $a=set_value('harga_beli[0]'); echo $a;?>" onKeyUp="getValues()"  readonly></td>

    <td><input type="text" class="form-control" id="barcode_3"      name="barcode[]"     value="<?php echo $detail->barcode;?>"></td>
    <td><input type="text" class="form-control" id="barang_nama_3"  name="barang_nama[]" value="<?php echo $detail->barang_nama;?>" onKeyUp="getValues()" readonly></td>
    <td><input type="text" class="form-control" id="harga_beli_3"   name="harga_beli[]"  value="<?php echo $detail->harga_beli;?>"  onKeyUp="getValues()" readonly></td>

我希望能解决这个问题。非常感谢您的回复。

2 个答案:

答案 0 :(得分:1)

像Zerfiryn提到的那样:&#34;你不能对html元素使用相同的id。 jQuery只会获取第一个元素&#34;

解决方案:您可以在html元素上多次使用同一个类。不是在你的ajax中调用id而是调用类form-control。 因此,请将$("#barcode")替换为$(".form-control")

写答案因为我无法发表评论-.-

答案 1 :(得分:0)

您还没有正确构建模型,您的模型正在直接输出数据,这样您最终会输出类似

的输出
[{barang_name:"value"},{harga_beli:"value"}][{barang_name:"value"},{harga_beli:"value"}][{barang_name:"value"},{harga_beli:"value"}]...

这是不正确的JSON 你的输出应该输出正确的JSON [[{barang_name:&#34; value&#34;},{harga_beli:&#34; value&#34;}],[{barang_name:&#34; value&#34;},{harga_beli:&#34;价值&#34;}],..] 这是数组数组

实现这一目标的最简单方法是

1)从您的模型中获取所需的数据

function your_model_function()
{
   $result = execute_query($sql);
   $rows = array();
   if($result->num_rows)
   {
     while($row = $result->fetch_row())
     $rows[] = $row;
   }
   return $rows;
}

2)使用json_encode以json格式编码整个数据数组

 $data = $this->model->your_model_func();
 echo json_encode($data);

3)在成功回调函数中使用JSON

 //writing success function of ajax
     function(data)
    {
      for(var i in data)
      {
         var row = data[i];
         // to acccesss the data of row ie json object you can use . operator
         console.log(row.key)
         // manipulate dom content.
      }
    }

注意:我编写了一个伪代码,只是你无法直接复制粘贴它以获得结果它只是为了清除你的想法。