2013-10-12 82 views
1

我尝试使用AJAX获取基于另一个下拉菜单值填充的下拉菜单。但我无法得到它的工作。希望你们能指出我正确的方向。使用Ajax向控制器发送发布数据

MODEL:

function get_all_classes($gradeid) 
{ 
    $this->db->where('grade_id', $gradeid); 
    $query = $this->db->get('classes'); 
    $result = $query->result(); 

    foreach($result as $row) 
    { 
     $options[$row->id] = $row->name; 
    } 

    return $options; 
} 

VIEW:

<?php 
echo form_dropdown('grades', $grades, '', 'id="grades"'); 
?> 

    //This dropdown is filled based on the selection from my 'grades' dropdown menu 
<?php 
echo form_dropdown('classes', $classes, '', 'id="classes"'); 
?> 

CONTROLLER: 功能registerform() { $这 - >负载>模型( 'school_info_model' );

if ($query = $this->school_info_model->get_all_grades()) 
    { 
     $data['grades'] = $query; 
    } 

    if ($query = $this->school_info_model->get_all_classes($this->input->post('gradeid'))) 
    { 
     $data['classes'] = $query; 
    } 

    $data['main_content'] = 'register_form_view'; 
    $this->load->view('template/template.php', $data); 
} 

AJAX:

var gradeid = $('#grades').val(); 

$("#grades").change(function(){ 
    $.ajax({ 
     url: '<?php echo base_url().'index.php/login/registerform' ?>', 
     type: 'POST', 
     data: gradeid, 
     succes: function(){ 
      alert('dadasd'); 
     } 
    }); 
}); 

编辑:更新Ajax代码

+0

请提醒您gradeid是在阿贾克斯给出,它是得到些什么?当调用ajax时 – Suleman

+1

? – Suleman

+0

你的ajax真的被称为?我没有看到任何实际运行它的代码。它是否包含在某个提交函数中? – kevindeleon

回答

0

看起来你需要某种形式的绑定事件,为您的阿贾克斯,像这样:

$('#link').on('click', function(){ 
    $.ajax({ 
     url: '<?php echo base_url().'index.php/login/registerform' ?>', 
     type: 'POST', 
     data: gradeid, 
    }); 
}); 
0

你可能会婉转t将您的gradeid设置在更改内,以便每次有人更改该字段时都会更改它,因为您将动态设置另一个下拉列表...因此,您将需要根据您正在检索的内容更改选项...所以您需要在您的AJAX的回报......你应该也可能有错误和这样contengiencies回调,但你可以阅读更多有关在这里http://api.jquery.com/jQuery.ajax/

$("#grades").change(function(){ 
    var gradeid = $(this).val(); 
    $.ajax({ 
     url: '<?php echo base_url().'index.php/login/registerform' ?>', 
     type: 'POST', 
     data: gradeid 
    }).done(function(data) { 
     //set your returned data to your options for classes 
    }); 
}); 
+0

现在我得到一个完整的HTML页面返回我怎么才能得到我需要的数据,所以选项? – user2118839

+0

这是因为您在ajax调用中调用'registerform'的方法正在返回视图...第一个选项:您应该创建一个名为'get_grades'(或更具描述性的)的新方法并通过ajax调用该方法...然后只是从你的查询中返回数组。第二种选择:在控制器(registerform)中检测是否使用'$ this-> input-> is_ajax_request()'发出ajax请求,如果是,则从查询返回数组,如果不返回整个视图/数据。这样你可以使用相同的方法。我更喜欢单独的方法......更清洁。 – kevindeleon