【问题标题】:Using Ajax to send post data to controller使用 Ajax 向控制器发送 post 数据
【发布时间】:2013-10-12 15:31:38
【问题描述】:

我正在尝试使用 AJAX 根据另一个下拉菜单值填充下拉菜单。但我无法让它工作。希望你们能指出我正确的方向。

型号:

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

查看:

<?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"');
?>

控制器: 函数注册表格() { $this->load->model('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 代码

【问题讨论】:

  • 请提醒您在 ajax 中给出的 Gradeid,它得到了吗?
  • 你的 ajax 真的被调用了吗?我没有看到任何实际运行它的代码。它是否包含在某处的提交函数中?

标签: ajax codeigniter


【解决方案1】:

您的 Ajax 似乎需要某种绑定事件,如下所示:

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

【讨论】:

    【解决方案2】:

    您可能希望在更改中设置您的gradeid,以便每次有人更改该字段时都会更改它,因为您将动态设置另一个下拉列表......然后您将需要根据您的内容更改选项retrive...所以当您的 ajax 返回时您需要一个回调...您也应该有可能出现错误等情况,但您可以在此处阅读更多相关信息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
        });
    });
    

    【讨论】:

    • 现在我得到了一个完整的 html 页面,我怎样才能只得到我需要的数据,那么选项呢?
    • 那是因为您在 ajax 调用中调用“registerform”的方法正在返回一个视图...第一个选项:您应该创建一个名为“get_grades”(或更具描述性的方法)的新方法并调用通过ajax ...然后从您的查询中返回数组。第二个选项:是在您的控制器(registerform)中检测它是否是使用$this-&gt;input-&gt;is_ajax_request() 的ajax 请求,如果是,则从查询中返回数组,如果不是则返回整个视图/数据。这样您就可以使用相同的方法。我更喜欢单独的方法......更清洁。
    猜你喜欢
    • 1970-01-01
    • 2015-04-16
    • 2023-03-20
    • 1970-01-01
    • 2017-04-29
    • 1970-01-01
    • 2016-08-02
    • 2019-01-06
    • 1970-01-01
    相关资源
    最近更新 更多