如何监控三个<select> </select>的更新值

时间:2012-10-04 21:45:54

标签: php codeigniter jquery

我使用codeigniter并遇到以下问题。

在控制器(results.php)中,我有类似的东西:

if(isset($_POST['tournaments'])){
$tournament_id = $_POST['tournaments'];
}else{
$tournament_id=1;
}

if( isset($_POST['categories'])){
$category_id = $_POST['categories'];
}else{
$category_id=1;
}

if( isset($_POST['groups'])){
$group_id = $_POST['groups'];       
}else{
$group_id=1;
}
//returns a list of tournaments (id and name)
$data['tournaments'] = $this->tournaments_model->getTournaments(); 

if($data['tournaments']>0){
//returns a list of categories where tournament=$tournament_id (id and name)
$data['categories'] = $this->tournaments_model->getCategories($tournament_id); 
if($data['categories']>0){
//returns a list of groups where where tournament=$tournament_id and category=$category_id
$data['groups'] = $this->tournaments_model->getGroup($tournament_id,$category_id);
}
}
//returns info about team ranking, etc. 
if($data['tournaments']>0 && $data['categories']>0 && $data['groups']>0){
$data['rows'] = $this->tournaments_model->getAll($tournament_id, $category_id, $group_id);

if($data['rows']>0){
$this->load->view('header_view', $data);
$this->load->view('results_view', $data);
$this->load->view('footer_view');   
}else{
$this->load->view('header_view', $data);
$this->load->view('norecords_view');
$this->load->view('footer_view');
}   
}

视图(results_view.php),输出如下内容: (更改带引号的标签)

"form"
"select name="tournaments" id="tournament""
"option value="1" selected="selected">A Tournament""
"option value="2">B Tournament"
"option value="3">C Tournament"

"select name="categories" id="category""
"option value="1" selected="selected">Junior"
"option value="6" >Pro-Junior"

"select name="groups" id="group"
"option value="1" selected="selected">A Group"
"option value="2">B Group"

所以,这应该设置三个字段:     $ _POST ['tournaments'] = 1     $ _POST ['categories'])= 1     $ _POST ['group'])= 1

我想做的是: 将这些值传递给控制器​​,而无需使用按钮提交表单。 除此之外,当“锦标赛”发生变化时(例如从1变为2),这应该为“类别”和“组”带来其他数据。 例如:  已选择:Tournament_id = 1
    然后Category_id = 1,
                 GROUP_ID = 1
                CATEGORY_ID = 2
                 GROUP_ID = 2
                 GROUP_ID = 3

选中:Tournament_id = 2
    然后Category_id = 1
                    GROUP_ID = 1
                    GROUP_ID = 2

这意味着,不知何故,我必须监视所有三个$ _POST字段的更新,将它们发送回控制器 并从模型中的sql查询中获取新数据。 我尝试了一些jquery,但没有得到我想要的结果。

我想,应该有一个函数可以监视三个“select”中任何一个的变化。 controller-view interaction

如果您有任何想法,请提供一些建议。 感谢。

这些是我的控制器(results.php)和视图(results_view.php) scripts

1 个答案:

答案 0 :(得分:1)

这样的东西?

$("form select").change(function () {
    $.getJSON("results_view.php", $(this).parent().serialize(), function() {
        // update form from JSON data
    });
});