codeigniter - 依赖于 jquery 和 ajax post 的下拉列表

2021-12-28 00:00:00 drop-down-menu jquery php ajax codeigniter

视图:learning_view.php

view : learning_view.php

这是我从数据库中填充的第一个下拉列表.

Here is the first dropdown which I am populating from database.

    <select name = 'category' id = 'category'>
        <option value="">-- Select Category --</option>
        <?php foreach($category as $item){ ?>
        <option value="<?php echo $item->id_cat; ?>"><?php echo $item->name; ?></option>
        <?php } ?>
    </select>
    <br><br>

我想要的是填充另一个依赖于第一个下拉列表的下拉列表.为此,我使用了 jQuery ajax 帖子.

What I want is to populate another dropdown which is dependent on the first dropdown. For that I have used the jQuery ajax post.

第二个下拉列表:

    <select name = 'type' id = 'type'>
        <option value="">-- Select Type --</option>
        <?php foreach($type as $item){ ?>
        <option value="<?php echo $item->id_type; ?>"><?php echo $item->name; ?></option>
        <?php } ?>
    </select>
    <br><br>

ajax 帖子:

    jQuery(document).ready(function(){
      $("#category").change(function() {
        var category_id = {"category_id" : $('#category').val()};
        console.log(category_id);

        $.ajax({
          type: "POST",
          data: category_id,
          url: "<?= base_url() ?>learning/dependent_dropdown",

          success: function(data){

            $.each(data, function(i, data){
            console.log(data.name);
            console.log(data.id_type)
            });
           }
         });
       });
     });

控制器:learning.php

controller : learning.php

   public function dependent_dropdown()
   {
       if(isset($_POST['category_id']))
       {
           $this->output
           ->set_content_type("application/json")
           ->set_output(json_encode($this->learning_model->getType($_POST['category_id'])));
       }
   }

数据来自我检查过的ajax帖子后的数据库

The data is coming from the database after ajax post which I checked by

    console.log(data.name);
    console.log(data.id_type)

在控制台中.

但无法弄清楚如何使用我视图的第二个下拉列表中的数据.

But couldn't able to figure out how to use the data in the second dropdown of my view.

我的意思是如何使用我在 ajax 发布后收到的数据填充第二个下拉列表.

I mean how can i populate the second dropdown with the data i have received after ajax post.

推荐答案

我通过修改ajax帖子的success函数找到了解决我的问题的方法:

I found a solution to my problem by modifying the success function of the ajax post:

success: function(data) {
    $.each(data, function(i, data) {
        $('#type').append("<option value='" + data.id_type + "'>" + data.name + "</option>");
    });
}

将值附加到下拉列表中.

Which append the value into the drop down.

<select name="type" id="type">
    <option value="">-- Select Type --</option>
</select>

我只是在ajax帖子的success函数中给了select块的id,并附加了值.它可以工作,但有一个问题,即当我更改第一个下拉菜单的选择时会出现新值,但为上一个选择显示的值并没有消失.

I just gave the id of the select block into the success function of the ajax post and appended the value. It works but there is a problem which is when I change the selection of the first dropdown new value appears but the values which were showing for the previous selection doesn't go away.

相关文章