【问题标题】:Populating second select from database based on first select value (vehicle models) - codeigniter根据第一个选择值(车辆模型)从数据库中填充第二个选择 - codeigniter
【发布时间】:2014-01-08 11:15:10
【问题描述】:

我在这里要做的是在有人从第一个选择输入中选择汽车标记时填充第二个(汽车型号)。

我的数据库中有汽车型号:

list_vehicle_models -  models table
[id] [mark_id] [value_model]

对于标记

list_vehicle_marks - marks table
[id] [value]

这是我的控制器,预计将根据 list_vehicle_marks 值接收带有 ID 的 ajax 请求:

function models($mark_id){

        $this->db->select();
        $this->db->from('list_vehicle_models');
        $this->db->join('list_vehicle_marks','list_vehicle_models.mark_id = list_vehicle_marks.id');
        $this->db->where('list_vehicle_marks.id',$mark_id);         
        $query = $this->db->get()->result_array();

        return $query;    
    }

(不需要此控制器功能示例,因为可以正常工作。) 这是我的观点,我有 foreach 来填充标记车辆,当有人根据我在选择中输入值的标记 ID 选择要在第二个选择输入中执行的标记时:

                               <select name="mark_vehicles" id="mark_vehicles">    
                    <option value="value1">-select-</option>
                    <?php foreach($vehicle_mark as $mark){ ?>
                    <option value="<?php echo $mark['id']; ?>">
                                    <?php echo $mark['value']; ?></option>
                    <?php } ?>                      
                       </select>        

            <select name="mark_models" id="mark_models">                
                    <option value=""></option>                  
            </select>

所以我的问题是当有人选择 ex 时如何发送 ajax 或 jquery 发布请求。奥迪在第二个选择框上要执行的所有奥迪模型都来自基于list_vehicle_models的数据库。

谢谢。

等待一些帮助。

【问题讨论】:

    标签: php jquery mysql ajax codeigniter


    【解决方案1】:

    您需要绑定到mark_vehiclesonChange 事件。使用 jQuery,这将是:

    $("#mark_vehicles").change(function() {
       var selectedMark = $("mark_vehicles").val();
       if (selectedMark != "") {
          $.ajax({
             type: "GET",
             url: "<controller>/models/" + selectedMark,
             success: function(data) {
                $("mark_models").html("");
                $("mark_models").append("<option value=''></option>");
                $.each(data, function() {
                   $("mark_models").append("<option value='" + this.id + "'>" + this.value + "</option>");
                });
             }
          });
       }
    });
    

    有关使用 jQuery 发出 AJAX 调用的文档是 here

    【讨论】:

    • Matt 会感谢您提供更多帮助,但无论如何谢谢。
    • 用完整的例子编辑。值得一提的是,我没有一开始就给你完整的例子,因为我想鼓励你使用 jQuery 文档,它非常好。我还更改了示例,将您的操作称为 GET 而不是 POST,因为这实际上是此处正确的调用类型。
    • 无法正常工作,马特。更改字段时出现错误 Uncaught SyntaxError: Unexpected token } ;
    • 已编辑。我忘记了 $.each() 函数的关闭 )。
    猜你喜欢
    • 2016-11-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-03
    • 1970-01-01
    • 2021-09-29
    相关资源
    最近更新 更多