【问题标题】:Get dropdown value when selected and pass it to controller without refreshing the page选择时获取下拉值并将其传递给控制器​​而不刷新页面
【发布时间】:2013-10-25 08:28:33
【问题描述】:

我有 2 个下拉列表,CATEGORY 和 SUBCATEGORY。 SUBCATEGORY 将根据在 CATEGORY 上选择的值而有所不同。我想要做的是获取值 id 并将其传递给我的控制器。一旦我在控制器中获得值,我会将其发送到我的模型,所有与我的 CATEGORY_ID 等效的数据都将显示在 SUBCATEGORY 中。我怎样才能做到这一点?我坚持使用javascript获取更改下拉列表的值。我正在尝试使用 ajax 但没有运气。它处于引导模式。

例子:

如果我选择:

类别 = 食物

SUBATEGORY = 蛋糕、蔬菜。水果等

类别 = 运动

SUBATEGORY = 篮球、排球等

希望有人能提供帮助。谢谢!

这是我在模态(视图)中的两个下拉列表:

类别

<select name='category_uuid' id="category_uuid">
<?php
  foreach($categories as $categories):
   if ($form_action=="update") {
    echo "<option value='".$category_uuid."' ".(($category_uuid == $categories->uuid) ? 'selected':'').">".$categories->name."</option>";
}else{ 
    echo "<option value='".$categories->uuid."'>".$categories->name."</option>";
    }
    endforeach; ?>
</select>

我的脚本

<script>
$("#category_uuid").change(function(){
$.ajax({
 type : 'POST',
 data : 'cat_id='+ $("#category_uuid").val(),
 url : 'questions/form',
 success : function(data){
             $('#data').val(data);
 }
});
}); 
</script>

子类别

<select name="subcategory_uuid" id="subcategory_uuid">
<?php                           
  foreach($subcategories as $subcategories):
if ($form_action=="update") {
 echo "<option value='".$subcategory_uuid."' ".(($subcategory_uuid == $subcategories->uuid) ? 'selected':'').">".$subcategories->name."</option>";
}else{ 
 echo "<option value='".$subcategories->category_uuid."'>".$subcategories->name."</option>";
}
endforeach; ?>
</select>

【问题讨论】:

  • 显示一些您遇到困难的代码。
  • @StBlade 完成。看看吧。

标签: javascript php ajax codeigniter modal-dialog


【解决方案1】:

试试这个,你可能需要相应地改变它:
你的JS:

$("#category_uuid").change(function(){
    $.ajax({
     type       : 'POST',
     data       : { cat_id : $("#category_uuid").val() } ,
     url        : '<?=base_url()?>questions/subCat',
     success    : function(data){
                 $('#subcategory_uuid').val(data);
     }
    });
});

你的控制器:

function subCat(){
    if( $this->input->post( null ) ){
        $id            = $this->input->post('cat_id', true);
        $data['cat']   = $this->model->get_all_sub_categories( $id );
        echo $this->load->view('ajax_categories', $data, true );
    }
}

你的模特:

function get_all_sub_categories( $id ){
    return $this->db->select('id, name')->where_in('column_id', $id)->get('table_name')->result_array();
}

你的看法ajax_categories

if( isset( $cat ) && is_array( $cat ) && count( $cat ) > 0 ){
    foreach( $cat as $key => $each ){
        echo '<option value="'.$id.'">'.$name.'</option>';
    }
}

【讨论】:

  • 谢谢@Nil'z,我现在就试试看它是否有效。 :) 顺便说一句,我在控制器中使用函数 _remap。它会影响什么吗?
  • 您是否相应地更改了模型和视图文件?
猜你喜欢
  • 1970-01-01
  • 2017-11-19
  • 2012-10-23
  • 2020-01-22
  • 1970-01-01
  • 1970-01-01
  • 2015-04-04
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多