DROPDOWN ID未使用ONCHANGE事件AJAX在CONTROLLER中传递

时间:2014-06-21 21:57:34

标签: ajax codeigniter

我的情况是这样的。 我有两个下拉选项:Building和Floor。我想要的是,当我更改/点击下拉菜单#34; Building"的值时,它会填满它的楼层数。例如,下拉"建筑"有两个选项,比如说,building1有10层,building2有5层。因此,当我选择building1时,它将在下拉列表中提供10个选项" Floor"。当我将它更改为building2时,它将再次填满下拉列表" floor"只有5个选项代表该建筑的楼层数。

enter image description here

所以这是我的代码: 查看:                                                                                     

                    <div class="modal-content">
                        <div class="modal-header">
                            <button type="button" class="close" data-dismiss="modal" aria-hidden="true">
                                &times;
                            </button>
                            <h4 class="modal-title" id="H3">Add New Room</h4>
                        </div>
                        <div class="modal-body">
                            <form role="form">
                                <div class="form-group">

                                    <label>Building</label>
                                    <select class="form-control" name="rt" id="bldg" onchange="activate_floor();">
                                        <option>Select Bldg. No</option>
                                        <?php
                                        if ($bldg_list) {
                                            foreach ($bldg_list as $row) {
                                                echo "<option value=\"" . $row -> buid . "\">" . $row -> budesc . "</option>";
                                            }
                                        }
                                        ?>
                                    </select>



                                    <label>Floor</label>
                                    <select class="form-control" name="flr" id="flr">
                                        <option>Select Floor. No</option>
                                        <?php
                                        if ($flr_list) {
                                            $str = 1;
                                            foreach ($flr_list as $row) {
                                                while($str <= $row -> flr ){                                                        
                                                  echo "<option value=\"" . $str . "\">" . $str . "</option>";  
                                                  $str++;
                                                } 
                                            }
                                        }
                                        ?>
                                    </select>



                                    <label>Room</label>
                                    <input class="form-control" placeholder="Enter Room No." required="required" id="rno" name="rno" />

                                    <label>Room Type</label>
                                    <select class="form-control" name="rt" id="rt">
                                        <option>Select Room Type</option>
                                        <?php
                                        if ($roomtype_list) {
                                            foreach ($roomtype_list as $row) {
                                                echo "<option value=\"" . $row -> rtcode . "\">" . $row -> rtdesc . "</option>";
                                            }
                                        }
                                        ?>
                                    </select>
                                </div>
                            </form>
                        </div>
                        <div class="modal-footer">
                            <button type="button" class="btn btn-default" data-dismiss="modal">
                                Close
                            </button>
                            <button type="submit" class="btn btn-primary">
                                Save
                            </button>
                        </div>

                    </div>
                    </form>
                </div>
            </div>
        </div>
    </div>
    <!--END MODAL WINDOW -->

如您所见,我在事件ONCHANGE上为下拉列表BUILDING分配了一个函数ACTIVATE_FLOOR()。

这是我在页脚放置的AJAX部分。

<script>
$(document).ready(function() {      
    $('select#flr').attr('disabled',true);
}); 


function activate_floor(){
    var bldg_id = $('select#bldg').val();

    $.ajax({
        type: 'POST',
        url: '<?php echo base_url('csettings/display_room/' )?>',
        data: 'buid='+bldg_id,
        success: function() {
            $('select#flr').attr('disabled',false);
            console.log(response);
        }
    });
}   
</script>

这是我的 CONTROLLER

public function display_room(){
   $buid = $this -> security -> xss_clean($this -> input -> post('buid'));
   $data['room_list']       = $this -> msettings -> get_room();
   $data['roomtype_list']   = $this -> msettings -> get_roomtype();
   $data['bldg_list']       = $this -> msettings -> get_bldg();     
   $data['flr_list']        = $this -> msettings -> get_flr($buid);
   $this -> display_view('vroom',$data);
}

当我使用Chromes Developer Tool进行调试时,我发现了下拉列表的ID&#34; Building&#34;正确地在URL中传递,如下所示。 enter image description here

但我现在的问题是,我的CONTROLLER中没有检索到这个值。

2 个答案:

答案 0 :(得分:0)

非常感谢您的回复。请查看我在控制台日志中截取的屏幕截图。正如我所注意到的,请求查询字符串不会添加下拉列表的ID,尽管响应会给出状态200。

enter image description here

答案 1 :(得分:0)

尝试在控制器中使用

  

$这 - &GT;输入 - &GT; get_post(&#39;打造专业化&#39)

而不是

  

$这 - &GT;输入 - &GT;柱(&#39;打造专业化&#39)

似乎该参数作为查询字符串传递。

相关问题