将数据从选择菜单传递到另一个选择菜单AJAX Codeigniter

时间:2013-09-09 10:12:48

标签: php javascript ajax jquery

我很难做到这一点,我使用的是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部分没问题我只需要知道如何在不刷新页面的情况下传递其值。

任何人都可以帮助我实现这一目标,请饶我。

2 个答案:

答案 0 :(得分:3)

//在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控制器 /// learn about 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>';

答案 1 :(得分:1)

这样做     控制器:

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);
        });
    });

});