将数据从选择菜单传递到另一个选择菜单 AJAX 编码点火器


passing data from select menu to another select menu AJAX Codeigniter

我很难做到这一点,我正在使用codeigniter php框架,基本上我有3个选择菜单,它的值来自数据库,例如:

<?php
$this->data[selOne] = $this->model->selectOne();      //the id of this one must send
$this->data[selTwo] = $this->model->selectTwo();     //<-to here and the id of 2nd select 
$this->data[selThree] = $this->model->selectThree(); //must send to here <-
$this->load->view->('controller/index.php', $this->data);
?>



在我看来

 <select>
    <?php foreach($selOne as $one){?>
    <option><?php echo $one->label;?></option>
    <?php }?>
 </select>
 <select>
    <?php foreach($selTwo as $one){?>
    <option><?php echo $one->label;?></option>
    <?php }?>
 </select>
 <select>
    <?php foreach($selThree as $one){?>
    <option><?php echo $one->label;?></option>
    <?php }?>
 </select>

我想实现的是
* 当我选择第一个选择菜单时,它会将其值传递给第二个菜单而不刷新页面。
* 与第二个选择菜单相同,它将其值传递给第三个选择菜单。

例如

在第一个选择菜单中,我选择"亚洲"

第二个选择菜单获取值亚洲,因此它显示亚洲的国家/地区,我也单击其国家/地区之一

第三个选择它返回在第二个选择菜单中选择的国家/地区的城市

SQL部分没有问题,我只需要知道如何在不刷新页面的情况下传递其值。

谁能帮我做到这一点,请饶了我。

在 HTML 中的第一个contents_name上添加类

您的custom_jqueryfile.js

$(document).ready(function() {
    $("body").delegate('.contents_name','change',function () {
        var continent_id = $(this).val();
        $.ajax( {
            type:GET,
            data: ({"continent_id":continent_id}),
            url: 'mysite.com/myajax',
            success: function (data_response) {
                $(".countries_target").html(data_response);
            },
            error:function () {
                alert('something went wrong!');
            }
        })
    } )
})

创建新的 CI 控制器了解 CI-URI

class myajax extends CI_Controller {
    public function __construct() {
        parent::__contruct();
    }
    public function index() {
        $check_uri_params = $this->uri->rsegment_array();
        //check where content_id showing print_r($check_uri_params) below URI_SEGMENTS to check in which params $content_id     
        ///$content_id = $this->uri->segment(3, 0); ---SOMETHING LIKE LEFT CODE TO GET CONTENT_ID
        $data['country_names'] = $this->db->get_where('country_name_table', array('id' => $content_id));
        $this->load->view('ajax_options',$data);            
    }
}

创建名为ajax_options.php的视图

echo '<select name="country_name">';
foreach($country_names as $country_name) {
        echo '<option value="'.$country_name['countryID_col_name'].'">'.$country_name['countryName_col_name'].'</option>';
}
echo '</select>';
这样做

控制器:

function get_zone_menu()
{
    $id = $this->input->post('id');
    $zones  = $this->Location_model->get_zones_menu($id);
    foreach($zones as $id=>$z):?>
    <option value="<?php echo $id;?>"><?php echo $z;?></option>
    <?php endforeach;
}

JavaScript:

$(function(){
$('#f_country_id').change(function(){
        $.post('<?php echo site_url('locations/get_zone_menu');?>',{id:$('#f_country_id').val()}, function(data) {
          $('#f_zone_id').html(data);
        });
    });

});