【问题标题】:Codeigniter With AJAX Dynamic dependent dropdownCodeigniter 与 AJAX 动态相关下拉
【发布时间】:2019-03-13 15:12:34
【问题描述】:

你能检查我哪里出错了吗?

似乎第三个下拉菜单没有从数据库中获取数据。确切的问题是来自 Users 模型的模型方法 get_by_ocp_id($ocp_id) 没有从第二个下拉列表中获取 id。我从 youtube 上的教程中获取了这段代码:https://www.youtube.com/watch?v=QTfPlTCsVME&t=823s。这只有一个依赖项,我需要 2 个。

控制器:

public function details($service_tag){
        $data['page_title'] = $service_tag . " ";   

        //Allocate
        //load all departments for allocation
        $data['departments'] = $this->Department->get_all();

        $this->load->view('staff/workstations/details', $data);
    }

    public function get_occupations(){
        $dep_id = $this->input->post('dep_id');
        $occupations = $this->Occupation->get_by_dep_id($dep_id);
        $queries = $this->db->queries;

        if(count($occupations)>0){
            $ocp_select = "";
            $ocp_select .= '<option value="">Choose Occupation </option>';
            foreach($occupations as $occupation){
                $ocp_select .= '<option value="'.$occupation->ocp_id.'">'.$occupation->ocp_name.'</option>';
            }
            echo json_encode($ocp_select);          
        }       
    }

    public function get_users(){        
        $ocp_id =$this->input->post('ocp_id');  
        echo "ID este: " . $ocp_id  ;
        $users = $this->User->get_by_ocp_id($ocp_id);               
        if(count($users)>0){
            $usr_select = "";
            $usr_select .= '<option value="">Choose User</option>';
            foreach($users as $user){
                $usr_select .= '<option value="'.$user->fmid.'">'.$user->first_name.' '.$user->last_name.'</option>';
            }
            echo json_encode($usr_select);
        }       
    }

型号:

    //Occupation model
    public function get_by_dep_id($dep_id){
            $this->db->select('*');
            $this->db->from('occupations');
            $this->db->where("dep_id='" . $dep_id . "'");
            $query = $this->db->get();

            return $result = $query->result();
        }
//User Model
public function get_by_ocp_id($ocp_id){
        $this->db->select('*');
        $this->db->from('users');
        $this->db->where("ocp_id='" . $ocp_id . "'");
        $query = $this->db->get();

        return $result = $query->result();
    }

查看:

<?php echo form_open('workstation/wrk_allocate', 'class="col-12 col-md-8"');  ?>
    <div class="form-group row">
        <label for="department" class="col-sm-4 col-form-label h3">Choose Department</label>
        <div class="col-sm-4">
            <select class="form-control" id="department" name="department">
                <option value="">Choose Department</option>
                <?php
                    foreach($departments as $department) {
                     echo '<option value="'. $department->dep_id .'">'. $department->dep_name . '</option>';
                    }
                ?>              
            </select>
        </div>  
    </div>

    <div class="form-group row">
        <label for="department" class="col-sm-4 col-form-label h3">Choose Occupation</label>
        <div class="col-sm-4">
            <select class="form-control" id="occupation" name="occupation">
                <option value="">Choose Occupation</option>                     
            </select>
        </div>  
    </div>
    <div class="form-group row">
        <label for="user" class="col-sm-4 col-form-label h3">Choose User</label>
        <div class="col-sm-4">
            <select class="form-control" id="user" name="user">
                <option value="">Choose User</option>                       
            </select>
        </div>  
    </div>   

<?php echo form_close(); ?>

<script type="text/javascript">
$(document).ready(function(){
 $('#department').on('change', function(){
    var dep_id = $('#department').val();
    if(dep_id == ''){
        $('#occupation').prop('disabled', true);
        $('#user').prop('disabled', true);
    } else {
        $('#occupation').prop('disabled', false);
        $.ajax({
            url:"<?php echo base_url(); ?>workstations/get_occupations",
            type:"POST",
            data: {'dep_id' : dep_id},
            dataType: 'json',
            success:function(data){
                $('#occupation').html(data);

            },
            error:function(){
                alert('NOK');
            }
        });
    }
 });
  $('#occupation').on('change', function(){
    var ocp_id = $('#occupation').val();
    if(ocp_id == ''){
        $('#user').prop('disabled', true);
    } else {
        $('#user').prop('disabled', false);
        $.ajax({
            url:"<?php echo base_url(); ?>workstations/get_users",
            typle:"POST",
            data: {ocp_id : ocp_id},
            dataType:'json',
            success:function(data){
                $('#user').html(data)
            },
            error:function(){
                alert("NOK");
            }
        });
    }
  });
});
</script>

【问题讨论】:

  • typle:"POST", 在你的第二个 ajax 中应该是 type:"POST",

标签: php ajax codeigniter codeigniter-3


【解决方案1】:

在第二次 Ajax 调用中$('#occupation').on('change', function(){})

应该是这样的

type : "POST",
data: {'ocp_id' : ocp_id},

【讨论】:

    【解决方案2】:
    data: {ocp_id : ocp_id},
    

    应该是

    data: {'ocp_id' : ocp_id},
    

    【讨论】:

    • 您能进一步解释一下吗?是什么让您认为这可以解决问题?
    • 我在控制器方法中创建了一行:echo "ID este:"。 $ocp_id ;如果 ocp_id 已传递给查询,则检查 DOM。
    • 要在控制器中获取 $_POST['ocp_id'],ajax 调用应该发送数据:{'ocp_id' : ocp_id},否则如何获取 ocp_id?
    • 如果ocp_id为1,你把data: {ocp_id: ocp_id},在代码中,你不认为它会发送data:{1:1} 吗?应该是 data:{'ocp_id',1}
    • 感谢stackoverflow.com/users/10704605/shoyeb-sheikh,在您发表评论后,我看到了错误。这是 type: "POST" 中的关键字 "type" 的拼写错误
    猜你喜欢
    • 1970-01-01
    • 2019-01-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-25
    • 1970-01-01
    • 2020-09-25
    • 2013-07-20
    相关资源
    最近更新 更多