使用ajax to php将复选框值传递到数组中

时间:2014-09-10 13:32:39

标签: php jquery ajax codeigniter

我需要一些帮助,使用ajax将复选框值传递到数组并检索控制器中的值。以下代码无效。我收到错误:“为foreach()提供的参数无效”。 Var_dump给出string(42) "Educator_Classes[]=1&Educator_Classes;[]=3

感谢您提供的任何帮助。

我的html表单输入:

<input type="checkbox" id="Educator_Classes[]" name="Educator_Classes" class="Educator_Classes" value="<?php echo $Class_Number; ?>"/>

我的jquery:

$("#Send_Invite").click(function() {
    var form_data = {
        Opportunity_Id: $('#Opportunity_Id').val(),
        Educator_Id: $('#Educator_Id').val(),
        Educator_Classes: $('#Educator_Classes:checked').serialize(),
        ajax: '1'
    };

    $.ajax({
        url: "<?php echo site_url('schedule/update_educator_class'); ?>",
        type: 'POST',
        data: form_data,
        success: function(data) {
            $('#response').html(data);
        }
    });

    return false;
})

我的控制器:

function update_educator_class() {
    $Educator_Id = $this->input->post('Educator_Id');
    $Opportunity_Id = $this->input->post('Opportunity_Id');
    $Educator_Classes = $this->input->post('Educator_Classes');

    foreach($Educator_Classes as $Educator_Class):
        $this->ion_auth_model->update_educator_class($Opportunity_Id, $Educator_Class, $Educator_Id);
    endforeach;
}

2 个答案:

答案 0 :(得分:2)

解决方案是您必须使用复选框的name属性数组。  喜欢:

<input type="checkbox" id="Educator_Classes[]" name="Educator_Classes[]" class="Educator_Classes" value="<?php echo $Class_Number; ?>"/>

答案 1 :(得分:2)

您必须使用[]作为name属性而不是id,否则它不能像数组一样

<input type="checkbox" id="Educator_Classes" name="Educator_Classes[]" class="Educator_Classes" value="<?php echo $Class_Number; ?>"/>

而且你的jQuery代码也可以更简单:

$("#Send_Invite").click(function() {
    var form_data = $(this).closest('form).serialize();
    form_data['ajax'] = 1;

    $.ajax({
        url: "<?php echo site_url('schedule/update_educator_class'); ?>",
        type: 'POST',
        data: form_data,
        success: function(data) {
            $('#response').html(data);
        }
    });

    return false;
});

首次亮相传递给$Educator_Classes的内容,你可以这样做:

var_export($Educator_Classes);
相关问题