如何通过JQUERY将多个复选框传递给PHP

问题描述:

我已经修改了我的代码,我使用了firebug console.log来检测php是否获取数组传递的天气。和萤火虫显示此 - rescheck [] = 2 & rescheck = 1 & rescheck = 3如何通过JQUERY将多个复选框传递给PHP

我认为PHP获取数组,如果这是什么PHP数组应该是。

SO的家伙,如果这正确的如何将数组插入数据库?或如何循环它? foreach循环iive没有奏效。

jQuery代码:

$('#res-button').click(function(){ 

var room_id=$('[name=rescheck[]]:checked').serialize().replace(/%5B%5D/g,'[]'); 

    alert(room_id); 


    $.ajax({ 
        type: "POST", 
        url: "reservation-valid.php", 
        data: {name_r:name_r, email_r:email_r,contact_r:contact_r,prop_id:p_id,cvalue:room_id}, 
        success: function(data) { 

        console.log(data); 
} 

}); 
}); 

<input type="checkbox" name="rescheck[]" value="<?php echo $roomid; ?>" /> 

PHP代码:

$c_array=$_POST['cvalue']; 

    echo $c_array; 

    //foreach($c_array as $ch) 
    //{ 
    //$sql=mysql_query("INSERT INTO reservation VALUES('','$prop_id','$ch','$name_r','$contact_r','$email_r','')"); 
    //} 

我想我管理我的jQuery代码是正确的,但我不知道如何获取与PHP。

+0

@user,我已经编辑你的问题,以使它更好一点。请停止无理取消我的修改。 – Shoe 2011-03-07 14:07:58

+0

我没有撤消您的编辑。我甚至不知道如何撤消 – user628961 2011-03-07 14:19:23

+0

@Charlie Pigarelli简单,老虎。看起来他在提交更新时可能正在编辑他的代码。 – Wiseguy 2011-03-07 14:43:37

这就是我在ibn网站上用jquery和ajax调用保存到db的复选框列表。它创建一个数组并将其传递给ajax调用,php脚本处理该数组。 如果你在这里得到任何错误,你应该用萤火虫调试js数组,以确保它正确地形成。

js脚本:

var $checkBox = $('[name=rescheck[]]:checked'); 
$checkBox.each(function() { 
    if ($(this).is(":checked")){ 
     valuesCheck[this.value] = 1; 
    }else{ 
     valuesCheck[this.value] = 0;  
    } 

和PHP脚本:

$checkTab = $_POST['cvalue']; 
     foreach ($checkTab as $idChkTab => $checkedOrNot){ 
      if ($checkedOrNot== "0"){ 
       //do something if isn't checked 
      } 
+0

我保存了$ c_array = $ _ POST ['cvalue']; – user628961 2011-03-07 14:14:31

+0

抱歉没有看到它。看看我的其他答案我认为我们得到它:) – Kreker 2011-03-07 16:39:45

+0

wheres你的其他答案? – user628961 2011-03-07 16:44:12

ROOM_ID是一个数组,所以如果你想获得每个值,您需要首先获得所有值在一起。

var room_id_string = ''; 

for(i=0;i<room_id.length;i++){ 
    room_id_string += room_id.eq(i).val() + ','; 
} 

你的下面的代码将只通过的[name=rescheck[]]:checked阵列jQuery对象以room_id

取而代之的是,你必须创建一个数组,并把它推值这样

var room_id = Array(); 

$('[name=rescheck[]]:checked').each(function(){ 
     room_id.push($(this).val()); 

}); 
+0

我试过你的代码。仍然不工作。我不明白为什么 – user628961 2011-03-07 14:31:19

+0

我将如何让我的PHP代码获取数组?并请检查我修改后的代码 – user628961 2011-03-08 03:15:36

+0

以上的男人。我试过你的代码,它在jQuery中可以。我提醒了room_id,它显示了所有的ID。但是当我检查php(那是当jquery arrray被传递时),我使用console.log来查看天气数组是否真的被传递,但唯一传递的是数组的最后一个值。 – user628961 2011-03-08 14:25:43

在jQuery中你可能会更容易使用序列化函数来获取所有的表单数据。 jQuery将表单传递给服务器,因此您不必担心获取所有值。如果您将它与验证插件一起使用,您可能会发现它更容易一些!

http://bassistance.de/jquery-plugins/jquery-plugin-validation/

+0

你能告诉我如何使用序列化,它有什么用处? – user628961 2011-03-07 14:13:07

+0

在您的ajax中将“data:{...}”行更改为“data:$(”#formId“)。serialize(),”其中formId是表单的ID(或者您可以使用引用表单如果先前存储在一个变量中,则应从表单中获取所有信息并创建对象以传递给服务器 – Alex 2011-03-07 14:53:57

+0

呵呵,http://api.jquery.com/serialize/供参考 – Alex 2011-03-07 14:55:02