代码之家  ›  专栏  ›  技术社区  ›  Renuga G

如何在ajax codeigniter中更改下拉列表时获得2个或更多输入值

  •  0
  • Renuga G  · 技术社区  · 2 年前
    $('document').ready(function () {
        $('.js-example-basic-single').select2();
    
        $('#empName').on('change', function() {
            var quan = $(this).val();
        
            $.ajax({
                url: '<?php echo base_url("index.php/emp_salary/ajaxReq"); ?>',
                type: 'post',
                data: {quan: quan}, 
            })
            .done(function(data) { //<---- we use .done here  
                $('#empId').val(data);
            })
        });
    
        $('#empName').on('change', function() {
            var dept = $(this).val();
        
            $.ajax({
                url: '<?php echo base_url("index.php/emp_salary/ajaxDept"); ?>',
                type: 'post',
                data: {dept: dept},
            })
            .done(function(data) {
                $('#department').val(data);
            })
        });
    });
    

    控制器部分

    public function ajaxReq() {
      $quan = $this->input->post( 'quan' );
      $value = $this->salary_model->getVal($quan);
      echo $value['empId'];
    }
    
    public function ajaxDept() {
        $dept = $this->input->post( 'dept' );
        $value = $this->salary_model->getDept($dept);
        echo $value['department'];
    }
    

    模型零件

    public function getVal($quan){
        $this->db->select('*');
        $this->db->from('employee');
        $where = array('empId' => $quan );
        $this->db->where($where);
        $query = $this->db->get();
        return $query->row_array();
    }
    
    public function getDept($dept){
        $this->db->select('*');
        $this->db->from('employee');
        $where = array('department' => $dept );
        $this->db->where($where);
        $query = $this->db->get();
        return $query->row_array();
    }
    

    错误

    遇到一个PHP错误

    严重性:警告

    消息:正在尝试访问null类型值的数组偏移量

    文件名:控制器/Emp_工资。php

    电话号码:133

    我怎样才能解决这个问题?

    我希望当下拉列表更改时,我会自动获得另一个输入值。

    0 回复  |  直到 2 年前
        1
  •  -1
  •   KUMAR    2 年前

    根据你的问题,我理解的是,当选择下拉列表更改时,Codeigniter中的jQuery ajax会自动获得2个或更多输入值。

    HTML部分:-

    <select name="test" id="test" >
    <option value="user1">user1</option>
    <option value="user2">user2</option>
    <option value="user3">user3</option>
    <option value="user4">user4</option>
    <option value="user5">user5</option>
    </select>
    <input type="text" placeholder="Address" id="address"/>
    <input type="text" placeholder="Name" id="name"/>
    <input type="text" placeholder="Contact" id="contact"/>
    

    JQuery/Ajax部分:-

    <script type="text/javascript">
        $('#test').change(function(){
        var test=$(this).val();
        $.ajax({
            type: "GET",
                url: '<?php echo base_url("index.php/emp_salary/ajaxReq"); ?>',
                data: {test:test},
                success:function(data)
                {
                var result = $.parseJSON(data);
                $("#address").val(result.address);
                $("#name").val(result.name);
               $("#contact").val(result.contact);     
                }
             })
        }); 
        </script>
    

    控制器部分:-

    public function ajaxReq() {
      $test = $this->input->post('test');
      $value = $this->salary_model->getVal($test);
      echo json_encode($value);
     }
    

    模型部件:-

    public function getVal($test){
        $this->db->select('*');
        $this->db->from('employee');
        $where = array('empId' => $test );
        $this->db->where($where);
        $query = $this->db->get();
        return $query->row_array();
    }