使用ajax将复选框值传递给数组php

使用ajax将复选框值传递给数组php

问题描述:

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

感谢您提供任何帮助。

我的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; 
} 
+1

选择像这样的educator_classes'Educator_Classes:$('[id =“Educator_Classes []”]')。serialize()'或'Educator_Classes:$('#Educator_Classes \\ [\\''')。serialize )' – Anton 2014-09-10 13:35:27

+0

@安顿嗯,尝试两个,仍然得到相同的结果。感谢您的快速回复。 – 2014-09-10 13:39:09

+0

啊,我注意到这是你想要的课程。你需要使用类指示符**''''**'$('.Educator_Classes:checked')' – Anton 2014-09-10 13:40:01

你必须使用[]的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); 
+0

var_dump给出'string(24)'Educator_Classes [] = 1&Educator_Classes; [] = 3' – 2014-09-10 15:16:38

+0

序列化整个表单解决了问题!谢谢 – 2014-09-10 17:17:17

+0

很高兴帮助你:)) – 2014-09-10 18:21:44

的解决方案是,你必须采取的name属性的阵列复选框。 像:

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

仍然收到相同的错误。 – 2014-09-10 13:54:31

+0

使用这个”/> – chirag 2014-09-10 14:03:19

+0

这就是我正在使用的,结果相同......'”/>' – 2014-09-10 14:58:11