-2

我有一个动态生成的复选框列表。经验:

<input class="cb1" var1="1" var2="2" var3="3" type="checkbox" /><label>Checkbox1</label>

我正在尝试将“var1”、“var2”和“var3”的值 $.post 到每个选中的复选框的 php 文件“data.php”中。

我不知道该怎么做。

4

2 回答 2

1

如果要序列化所有表单元素,可以使用 $('#form').serialize() ,但在您的情况下,您可以使用 $().find() 函数扫描生成的复选框,并使用 $.each 来迭代找到的每个元素

假设您的复选框保留在 id='checkbox_conrainer' 的 div 中,并且它具有名称属性'checkbox[]'

<div id="checkbox_container">
    <input name="checkbox[]" class="cb1" var1="1" var2="2" var3="3" type="checkbox" /><label>Checkbox1</label>
    <input name="checkbox[]" class="cb2" var1="1" var2="2" var3="3" type="checkbox" /><label>Checkbox2</label>
</div>

在 javascript 部分你可以写:

 var $postData = '';
 $('#checkbox_conrainter').find('input[type=checkbox]').each(function(){
    var $checkbox = $(this); //just for object caching
    if($checkbox).is(':checked')){
        var $checkbox_name = $checkbox.attr('name');
        var $checkbox_val1 = $checkbox.attr('val1'); //you can use loop if you want
        var $checkbox_val2 = $checkbox.attr('val2');
        var $checkbox_val3 = $checkbox.attr('val3');
    }
    $postData +='&'+$checkbox_name+'[val1]='+$checkbox_val1
               +'&'+$checkbox_name+'[val2]='+$checkbox_val2
               +'&'+$checkbox_name+'[val3]='+$checkbox_val3;
});
$.post('data.php',$postData);

在您的 php 页面中,变量的结构将是这样的

$_POST = Array(
    checkbox[0] => Array(
        [val1] => 1 //val1 value,
        [val2] => 2 //val2 value,
        [val3] => 3 //val3 value
    ),
    checkbox[1] => Array(  //if you have more checkbox
        [val1] => 1 //val1 value,
        [val2] => 2 //val2 value,
        [val3] => 3 //val3 value
    ),
)

cmiiw

于 2012-12-18T13:23:57.870 回答
0

首先,将所有复选框包含在具有 id 或 name 属性的标签中。

然后在任何事件或按钮上单击,您可以通过

  $(document).ready(function(){
             $("#input_form").submit(function(){
                 var querystring = $(this).serialize();
                   $.ajax({
                   type: 'POST',
                   url: url,
                   data: querystring,
                   success: success,
                         dataType: dataType
                     });
                 });
        });

并在 PHP 文件中尝试获取循环中的值

        foreach($_POST as $val){
             //TODO make a query string again for inserting in db etc
        }
于 2012-12-18T12:58:48.867 回答