I'm trying to make a dynamic dropdown with Codeigniter but I'm having trouble getting the values on the next dropdown. When I select and option on the first dropdown, the second dropdown is not populated:
I'm also not familiar at using AJAX, I only write the script based on what I searched so please teach me what to do to make the dynamic dropdown work.
This is my Model:
public function category()
{
    $this->db->order_by("category", "ASC");
    $query = $this->db->get('categories');
    return $query->result();
}
function get_subcategory($parent_id)
{
    $this->db->where('parent_id', $parent_id);
    $this->db->order_by('sub_category', 'ASC');
    $query = $this->db->get('sub_categories');
    $output = '<option value="">Select Sub-Category</option>';
    foreach ($query->result() as $row) {
        $output .= '<option value="' . $row['id'] . '">' . $row['sub_category'] . '</option>';
    }
    return $output;
}
My Controller:
public function category()
{
    $data['title'] = 'List of Category';
    $this->load->view('../admin/template/admin_header');
    $this->load->view('../admin/template/admin_topnav');
    $this->load->view('../admin/template/admin_sidebar');
    $this->load->view('../admin/category/category', $data);
    $this->load->view('../admin/template/admin_footer');
}
function get_subcategory()
{
    if ($this->input->post('parent_id')) {
        echo $this->Admin_model->get_subcategory($this->input->post('parent_id'));
    }
}
View:
<div class="form-group">
    <label for="" class="control-label">Category</label>
    <select name="category" id="category" class="custom-select select2" required>
        <option value="">- Select Category -</option>
        <?php
            foreach ($category as $row) {
                echo '<option value="' . $row->id. '">' . $row->category . '</option>';
            }
        ?>
    </select>
</div>
<div class="form-group">
    <label for="" class="control-label">Sub Category</label>
    <select name="sub_category" id="sub_category_id" class="custom-select select2" required>
        <option value="">- Select Sub Category -</option>
    </select>
</div>
And script:
$(document).ready(function() {
    $('#category').change(function() {
        var parent_id = $('#category').val();
        if (parent_id != '') {
            $.ajax({
                url: "<?php echo base_url(); ?>admin/get_subcategory",
                method: "POST",
                data: {parent_id:parent_id},
                success: function(data) {
                    $('#sub_category_id').html(data);
                }
            });
        } else {
            $('#sub_category_id').html('<option value="">Select Sub Category</option>');
        }
    });
});

 
     
    