我有一个动态生成的复选框列表。经验:
<input class="cb1" var1="1" var2="2" var3="3" type="checkbox" /><label>Checkbox1</label>
我正在尝试将“var1”、“var2”和“var3”的值 $.post 到每个选中的复选框的 php 文件“data.php”中。
我不知道该怎么做。
我有一个动态生成的复选框列表。经验:
<input class="cb1" var1="1" var2="2" var3="3" type="checkbox" /><label>Checkbox1</label>
我正在尝试将“var1”、“var2”和“var3”的值 $.post 到每个选中的复选框的 php 文件“data.php”中。
我不知道该怎么做。
如果要序列化所有表单元素,可以使用 $('#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
首先,将所有复选框包含在具有 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
}